Numpy中的矩阵向量乘法分别是np.dot(a,b)、np.multiply(a,b) 以及*,刚开始接触的时候比较模糊,于是自己整理了一下。先来介绍理论,然后再结合例子深入了解一下。
数组 | 矩阵 | |
---|---|---|
元素乘法 | np.multiply(a,b) 或 a*b | np.multiply(a,b) |
矩阵乘法 | np.dot(a,b) | np.dot(a,b) 或 a* b |
我们可以看到:
当对象是数组时候,对应元素乘法使用 np.multiply(a,b) 或a * b,矩阵乘法用np.dot(a,b)
当对象是矩阵时候,对应元素乘法使用np.multiply(a,b) , 矩阵乘法用np.dot(a,b)或 a*b
注:数组和矩阵对应元素相乘,输出与相乘数组/矩阵的大小一致
对于 np.array 对象
>>> a
array([[1, 2],
[3, 4]])
当对象是数组时候,元素乘法使用 np.multiply(a,b) 或 a*b
>>> np.multiply(a,a)
array([[ 1, 4],
[ 9, 16]])
>>> a*a
array([[ 1, 4],
[ 9, 16]])
当对象是数组时候,矩阵乘法用np.dot(a,b)、np.matmul(a,b) 或者a.dot(b)
>>> np.dot(a,a)
array([[ 7, 10],
[15, 22]])
>>> np.matmul(a,a)
array([[ 7, 10],
[15, 22]])
>>> a.dot(a)
array([[ 7, 10],
[15, 22]])
对于 np.matrix 对象
>>> A
matrix([[1, 2],
[3, 4]])
当对象是矩阵时候,元素乘法使用np.multiply(a,b)
>>> np.multiply(A,A)
matrix([[ 1, 4],
[ 9, 16]])
当对象是矩阵时候,矩阵乘法用np.dot(a,b)、np.matmul(A,A)、a.dot(b)或 a*b
>>> np.dot(A,A)
matrix([[ 7, 10],
[15, 22]])
>>> np.matmul(A,A)
matrix([[ 7, 10],
[15, 22]])
>>> A.dot(A)
matrix([[ 7, 10],
[15, 22]])
>>> A*A
matrix([[ 7, 10],
[15, 22]])