python中dot函数运算过程总结
作者:zhaoweiwei369 发布时间:2021-03-01 16:52:23
本文结合其他博主的一些介绍总结了dot函数运算过程
基本简介
dot函数为numpy库下的一个函数,主要用于矩阵的乘法运算,其中包括:向量内积、多维矩阵乘法和矩阵与向量的乘法。
1. 向量内积
向量其实是一维的矩阵,两个向量进行内积运算时,需要保证两个向量包含的元素个数是相同的。
例1:
import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7])
y = np.array([2, 3, 4, 5, 6, 7, 8])
result = np.dot(x, y)
print(result)
输出结果:
168
计算过程就是将向量中对应元素相乘,再相加所得。即普通的向量乘法运算。
2. 矩阵乘法运算
注意:
1.数组的运算是元素级的,数组相乘的结果是各对应元素的积组成的数组,而对于矩阵而言,需要求的是点积
2.两个矩阵(x, y)如果可以进行乘法运算,需要满足以下条件:
x为 m×n 阶矩阵,y为 n×p 阶矩阵,
则相乘的结果 result 为 m×p 阶矩阵。例子如下
例2:
import numpy as np
x = np.array([[1, 2, 3],
[3, 4, 4]])
y = np.array([[0, 1, 1, 1],
[1, 2, 0, 1],
[0, 0, 2, 1]])
result = np.dot(x, y)
print(result)
print("x阶数:" + str(x.shape))
print("y阶数:" + str(y.shape))
print("result阶数:" + str(result.shape))
结果为:
[[ 2 5 7 6]
[ 4 11 11 11]]
x阶数:(2, 3)
y阶数:(3, 4)
result阶数:(2, 4)
下面我们来分析一下一维数组到多维数组之间的运算过程
2.1如下单个数的dot函数运算所示:
np.dot(5,8)40
2.2如下一维数组的dot函数运算所示:
#如果arr1和arr2都是一维数组,那么它返回的就是向量的内积
arr1=np.array([2,3])
arr2=np.array([4,5])
np.dot(arr1,arr2)
#23
如图所示:
2.3如下二维数组的dot函数运算所示:
#如果arr5 和arr6都是二维数组,那么它返回的是矩阵乘法
arr5=np.array([[2,3],[4,5]])
arr6=np.array([[6,7],[8,9]])
np.dot(arr5,arr6)
"""
array([36,4],
? ? ? ? ? [64,73])
"""
运算过程如下所示:
2.4如下二维数组与三维数组的dot函数运算:
#arr7二维数组与arr8三维数组的dot函数矩阵运算
arr7=np.array([[2,3,4],[5,6,7]])
arr8=np.array([[0,1,2],[3,4,5],[6,7,8]])
np.dot(arr7,arr8)
"""
array([33,42,51],[60,78,96])
"""
2.5如下多维数组的dot函数运算所示:
#多维数组的dot函数矩阵运算
arr12=np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
arr13=np.array([[0,1,2],[3,4,5],[6,7,8]])
np.dot(arr12,arr13)
"""
array([15,18,21],
????????[42,54,66],
????????[69,90,111],
????????[96,126,156])
"""
注意:
dot()函数可以通过NumPy库调用,也可以由数组实例对象进行调用。例如:a.dot(b) 与 np.dot(a,b)效果相同。但矩阵积计算不遵循交换律,np.dot(a,b) 和 np.dot(b,a) 得到的结果是不一样的。
来源:https://blog.csdn.net/qq_36297093/article/details/125044307


猜你喜欢
- python爬虫模块PyQuery简介PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,
- 案例:如果我们起了一个协程,但这个协程出现了panic,但我们没有捕获这个协程,就会造成程序的崩溃,这时可以在goroutine中使用rec
- 对比Google Chrome、IE来说,在Windows环境下,Firefox 3.5的启动速度非常慢,据说是因为Firefox 3.5从
- 方法组成模式方法里的所有语句都必须处在同一个归纳层次上无用的注释让代码自我表白标注为什么这样,而不是如何这样对方法表现进行描述等于重复表现这
- 1. Jupyter Notebooks作为小白,我现在使用的python编辑器是Jupyter Notebook,非常的好用,推荐!!!你
- PyTorch: https://github.com/shanglianlm0525/PyTorch-Networksimport tor
- 1,前台引入所需的js 可以从官网上下载function getTab(){var url = contextPath+'/fund
- PHP chr() 函数实例从不同 ASCII 值返回字符:<?php echo chr(52) . "<br>
- 创建新的项目django-admin.py startproject my_project创建新的App# 在Django项目(my_pro
- Select字句在逻辑上是SQL语句最后进行处理的最后一步,所以,以下查询会发生错误:SELECT YEAR(OrderDate) AS O
- table通过使用下面语句创建:create table userinfo(name text, email text)更快地插入数据在此用
- 下学期就要学习MySQL了,没事先在家搞一搞,没想到光安装就费了半天劲,所以我决定整理下,供大家参考。第一步 下载安装包:官网毕竟是甲骨文公
- python爬虫基本告一段落,琢磨搞点其他的,正好在网上看到一个帖子,一个外国13岁小朋友用python写的下棋程序,内容详细,也有意思,拿
- 1、关于页面元素的引用通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且
- conn.execute、rs.open之间的差别,conn.execute、rs.open、command.execute方法用法大大不同
- 由于数据存放在大数据平台的Hive数据仓库中,我需要在Win10系统上利用Python3连接Hive,然后读取数据,进行探索、分析和挖掘工作
- Python安装过程,供大家参考,具体内容如下1.下载安装程序我们安装Python的一个重要目的是为了用IAR编译CC2640 OAD文件时
- 处理数据时我们经常需要从数组中随机抽取元素,这时候我们可以考虑使用np.random.choice()函数语法格式numpy.random.
- 1. 带默认值的参数在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下:>> def defaultValueA
- 有时需要获取远程网站的某些信息,而服务器又限制了GET方式,只能通过POST数据提交,这个时候我们可以通过asp来实现模拟提交post数据,