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()或者* 

原文地址:https://www.cnblogs.com/ssyfj/p/12913015.html