Numpy中的矩阵向量乘法: np.multiply()、np.dot()、星号(*)、@等
Numpy中的矩阵向量乘法: np.multiply()、np.dot()、星号(*)、@等
元素乘法:np.multiply(a,b)
矩阵乘法:np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b) 或a @ b
需要注意:“ * ”在np.array和tensor中,表示元素相乘;在np.matrix中,表示矩阵相乘
cm 在pytorch和numpy中,dot作用也不同(可以参考莫烦python中numpy和tensor部分的代码),且dot不能用于非numpy的普通数组。
numpy中数组(array)和矩阵(matrix)的区别:
matrix是array的分支,matrix和array在很多时候都是通用的,你用哪一个都一样。但这时候,官方建议大家如果两个可以通用,那就选择array,因为array更灵活,速度更快,很多人把二维的array也翻译成矩阵。但是matrix的优势就是相对简单的运算符号,比如两个矩阵相乘,就是用符号*,但是array相乘不能这么用,得用方法.dot()。array的优势就是不仅仅表示二维,还能表示3、4、5…维,而且在大部分Python程序里,array也是更常用的。
对于np.array对象
元素乘法用 a*b 或 np.multiply(a,b) 。
矩阵乘法用 np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b) 或 a@b
注:matmul和dot的区别是np.matmul中禁止矩阵与标量的乘法。
对于np.matrix 对象
元素乘法用 np.multiply(a,b)
矩阵乘法用 a*b 或 np.dot(a,b) 或 np.matmul(a,b) 或 a.dot(b) 或 a@a
对于matmul()的进一步介绍,请见我的另一篇博客:Numpy广播与matmul()

浙公网安备 33010602011771号