python3 numpy中数组相乘np.dot(a,b)运算的规则说明

 更新时间:2021年3月16日 15:00  点击:1592

python np.dot(a,b)运算规则解析

首先我们知道dot运算时不满足交换律的,np.dot(a, b)与np.dot(b, a)是不一样的

另外np.dot(a,b)和a.dot(b)果是一样的

1.numpy中数组相乘np.dot(a,b)运算条件:

对于两数组a和b :

示例一:

a = np.array([[3], [3], [3]]) # (3,1)
b = np.array([2, 2, 1]) # (3,)
print(a, "\na的shape", a.shape)
print(b, "\nb的shape", b.shape)
c = b.dot(a)
print(c, "\nc的shape", c.shape)

输出:

 [3]
 [3]] 
a的shape (3, 1)
[2 2 1] 
b的shape (3,)
[15] 
c的shape (1,)

示例二:

a = np.array([[2,2,2,1],[3,3,3,1],[4,4,4,4]]) # shape=(3,4)
b = np.array([[1,1,1],[2,2,2],[3,3,3],[4,4,4]]) # shape=(4,3)

可以直接看他们的shape:a的shape为(3, 4)设为(m, n);b的shape为(4, 3)设为(x, y)

对于上面两个数组a,b:

np.dot(a,b)的运算条件为:n==x,如果a的shape变为(4, 3)则两则无法dot

简单来说规律就是:如果a.shape=(m,n),b.shape=(x,y)那么**np.dot(a,b)**的运算条件为:n=x (这一点用于在python理解和快速判断数组的shape是否用对了)

实际上数组运算的规律将两个数组画出来,是这样的:

2.np.dot(a,b)运算之后的结果解析

规律:dot之后会将两组数组中相等的(符合dot条件的)维度消掉,得到剩下的维度组合成新的数组,如果剩下只有一个维度则为行(对应一维),列是无

对于a.shape=(m,n),b.shape=(x,y):

dot之后n和x会消掉,结果shape变成(m,y)

如果n为1(或者空),shape变为(y,)

e.g1:

a = np.array([1,1,1]) # shape=(3,)
b = np.array([[3],[3],[3]]) # shape=(3,1)
print(np.dot(a,b))
print("dot之后的shape为:", np.dot(a,b).shape)

那么,3和3消掉,剩下只有一个数1,对应1行没有列==>(1,)

运算结果:

[9]
dot之后的shape为:(1,)

e.g2:

a.shape=(4,1) 
b.shape=(1,4)

那么( 1和1消掉,剩下(4,4) )

np.dot(a,b)的shape为(4,4)

补充:Python3中的列表、数组和矩阵及*、np.dot和np.multiply解析

今天用Python进行数据处理的时候,突然发现自己搞不清Python中的列表和数组有啥区别及其运算规则,总是得不到自己想要的结果。于是就开始在网上找相关资料,发现很多资料讲的都十分片面,下面自己总结的各个资料,给大家进行详细的解释:

1.列表、数组和矩阵

列表是Python中最基本的数据结构,列表中可以存储数字、字符串等,因此Python可以通过列表存储数组;

数组是Python扩展库Numpy中的一种数据结构ndarray;

矩阵是同样是Python扩展库Numpy中的一种数据结构mat;

那么既然存在列表,为什么我们不直接使用Python中的列表,而使用Numpy呢?原因显然意见,Python中列表的存储效率和输入输出性能远不及Numpy中的数组和矩阵,但是由于列表中可以存储任意元素,因此列表的通用性方面要比数组和矩阵强。总之列表与数组、矩阵各有各的优势,要视使用场合选择合适的数据结构。

同样Numpy中的数组和矩阵也是有区别的:

Numpy中的矩阵必须是2维的,而Numpy中数组可以是多维的,因此矩阵是数组的一个特例,所以在Numpy中的矩阵继承着数组的所有特性;

同时我们常常需要查看列表、数组和矩阵的属性,如size、shape、len

其中len():返回对象的长度,可以作用于列表、数组和矩阵:len(list([1,2,3]))

size()和shape()是Numpy扩展库中才用的函数:

size():计算所有数据的个数,同样可以作用于列表、数组和矩阵:np.size(np.array([1,2,3]))

shape():得到数据每维的大小,同样可以作用于列表、数组和矩阵:np.shape(np.array([1,2,3]))

不同于len,shape和size还可以作为数组和矩阵的属性(列表不行),使用方法如下:a.shape、a.size

2.Python中的星号(*)、np.multiply()、np.dot()

1.星号(*):

对数组执行对应位置相乘;对矩阵执行矩阵乘法运算

2.np.multiply()

不管对矩阵还是数组都是执行对应位置相乘

3.np.dot()

对秩为1的数组:对应位置相乘并求和

对秩不为1的数组:矩阵乘法运算

对矩阵:矩阵乘法运算

上面是对列表、数组、矩阵以及Python中各种乘法的总结,果然总结对自己理解问题有很大的帮助,现在自己自己很清楚它们的用法了,希望这篇博客也可以帮助大家~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。如有错误或未考虑完全的地方,望不吝赐教。

[!--infotagslink--]

相关文章

  • Python3 实现将bytes图片转jpg格式

    这篇文章主要介绍了Python3 实现将bytes图片转jpg格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-08
  • Python3中小括号()、中括号[]、花括号{}的区别详解

    这篇文章主要介绍了Python3中小括号()、中括号[]、花括号{}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15
  • Python3 常用数据标准化方法详解

    这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
  • 从Pytorch模型pth文件中读取参数成numpy矩阵的操作

    这篇文章主要介绍了从Pytorch模型pth文件中读取参数成numpy矩阵的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-04
  • 计算Python Numpy向量之间的欧氏距离实例

    这篇文章主要介绍了计算Python Numpy向量之间的欧氏距离实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-23
  • 浅谈Python3中print函数的换行

    这篇文章主要介绍了浅谈Python3中print函数的换行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-05
  • 解决python3安装pandas出错的问题

    这篇文章主要介绍了解决python3安装pandas出错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-05-20
  • python3 sqlite3限制条件查询的操作

    这篇文章主要介绍了python3 sqlite3限制条件查询的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-07
  • Python-numpy实现灰度图像的分块和合并方式

    今天小编就为大家分享一篇Python-numpy实现灰度图像的分块和合并方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • python3 循环读取excel文件并写入json操作

    这篇文章主要介绍了python3 循环读取excel文件并写入json操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-14
  • Python编程OpenCV和Numpy图像处理库实现图片去水印

    这篇文章主要介绍了Python编程中如何实现图片去水印本文采用了OpenCV和Numpy的图像处理的方法来实现,文中附含详细示例代码,有需要的朋友可以借鉴参考下...2021-09-26
  • 引用numpy出错详解及解决方法

    这篇文章主要介绍了引用numpy出错 解决方法的相关资料,需要的朋友可以参考下...2020-04-25
  • 解决python3 中的np.load编码问题

    这篇文章主要介绍了解决python3 中的np.load编码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-27
  • python3 如何读取python2的npy文件

    这篇文章主要介绍了python3 读取python2的npy文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-27
  • numpy的squeeze函数使用方法

    这篇文章主要介绍了numpy的squeeze函数使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-22
  • python numpy实现rolling滚动案例

    这篇文章主要介绍了python numpy实现rolling滚动案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-08
  • 基于python3+OpenCV实现人脸和眼睛识别

    这篇文章主要为大家详细介绍了基于python3+OpenCV实现人脸和眼睛识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
  • python3+openCV 获取图片中文本区域的最小外接矩形实例

    这篇文章主要介绍了python3+openCV 获取图片中文本区域的最小外接矩形实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-03
  • win10系统下python3安装及pip换源和使用教程

    这篇文章主要介绍了win10系统下python3安装及pip换源和使用教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-30
  • 新手学习Python2和Python3中print不同的用法

    在本篇文章里小编给大家分享的是关于Python2和Python3中print不同的用法,有兴趣的朋友们可以学习下。...2020-06-10