首页 > 解决方案 > Python 中 NumPy.dot() 和 '*' 操作的区别

问题描述

在此页面上 ,我发现:v1 * v2 == np.multiply (v1, v2)

但在另一页上我发现:v1 * v2 == v1.dot (v2)

拜托,你能给我解释一下吗?

标签: pythonnumpy

解决方案


a * bnp.multiply(a, b)np.dot是点积,np.multiply 仅当操作数之一是标量(数字,与向量或矩阵相对)时才相同。

矩阵示例

>>> a = np.arange(0, 9).reshape(3, 3)
>>> b = np.arange(10, 19).reshape(3, 3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> b
array([[10, 11, 12],
       [13, 14, 15],
       [16, 17, 18]])
>>> a * b # elementwise multiplication
array([[  0,  11,  24],
       [ 39,  56,  75],
       [ 96, 119, 144]])
>>> np.multiply(a, b) # elementwise multiplication
array([[  0,  11,  24],
       [ 39,  56,  75],
       [ 96, 119, 144]])
>>> a @ b # matrix multiplication
array([[ 45,  48,  51],
       [162, 174, 186],
       [279, 300, 321]])
>>> np.dot(a, b) # matrix multiplication
array([[ 45,  48,  51],
       [162, 174, 186],
       [279, 300, 321]])

推荐阅读