np.dot()、np.multiply()、np.matmul()方法以及*和@运算符的用法总结
转载自:https://blog.csdn.net/FrankieHello/article/details/103510118
一:基本概念
(一)点积(dot product)
又称为数量积、标量积(scalar product)或者内积(inner product)
它是指实数域中的两个向量运算得到一个实数值标量的二元运算。
举例:
(二)矩阵乘法
两个运算的矩阵需要满足矩阵乘法的规则,即需要前一个矩阵的列与后一个矩阵的行相匹配。
总之:上面的两个概念都是针对向量或者矩阵的运算,需要和标量的计算区分开来。
二:dot运算
如果参与运算的两个一维数组,那么得到的结果是两个数组的内积(inner product);
可以看着没有进行转置的矩阵乘法。
注意:两个向量必须同维度
如果参与运算的是两个二维数组,那么得到的结果是矩阵乘积(matrix multiplication),两个参与运算的矩阵需要满足矩阵乘法的规则,但是官方更推荐使用np.matmul()和@用于矩阵乘法。
三:np.multiply()
和*
星号和np.multiply()方法是针对的是标量的运算,当参与运算的是两个数组时,得到的结果是两个数组进行对应位置的乘积(element-wise product),输出的结果与参与运算的数组或者矩阵的大小一致。
四:np.matmul()
和@
matmul是matrix multiply的缩写,所以即是专门用于矩阵乘法的函数。另外,@运算方法和matmul()则是一样的作用,相当于简便写法。
五:总结
当进行向量的内积运算时,可以通过np.dot()
当进行矩阵的乘法运算时,可以通过np.matmul()或者@
当进行标量的乘法运算时,可以通过np.multiply()或者*