5.16
#15 numpy中的np.dot(),np.matmul(), np.multiply(), np.prod(), * , @ 的区别
- np.dot():向量内积(矩阵乘法)
- np.matmul():矩阵乘法
- np.multiply():对应元素相乘
- np.prod():矩阵某维度的元素乘积
- *:等价于np.multiply()
- @:等价于np.matmul()
比如:
(1) np.dot()
>>> a = np.array([1,2,3,4])
>>> b = np.array([2,1,2,4])
>>> np.dot(a,b)
26
(2) np.matmul()和@
>>> A = np.array([[1,2,3],
... [2,3,4],
... [1,0,0]])
>>> B = np.array([[1,0,0],
... [0,1,1],
... [0,0,1]])
>>> np.matmul(A,B)
array([[1, 2, 5],
[2, 3, 7],
[1, 0, 0]])
>>> A@B
array([[1, 2, 5],
[2, 3, 7],
[1, 0, 0]])
>>> np.matmul(B,A)
array([[1, 2, 3],
[3, 3, 4],
[1, 0, 0]])
>>> B@A
array([[1, 2, 3],
[3, 3, 4],
[1, 0, 0]])
(3) np.multiply()和*
>>> A = np.array([[1,2,3],
... [2,3,4],
... [1,0,0]])
>>> np.prod(A)
0
>>> np.prod([[1,2],[3,4]])
24
>>> np.prod(A,axis=1)
array([ 6, 24, 0])
>>>
>>> np.multiply(2,A)
array([[2, 4, 6],
[4, 6, 8],
[2, 0, 0]])
>>>
>>> 2*A
array([[2, 4, 6],
[4, 6, 8],
[2, 0, 0]])
>>>
>>> np.multiply(2,1)
2
备注:其实输入二维矩阵到np.dot()也能实现矩阵运算,但不推荐这样做,尽量让专门的函数做专门的事情