Python numpy产品操作,pythonnumpy,乘积,运算


本文通过例子,对matrix/array格式的乘积运算进行总结。

1.关于乘积的三种操作

  • *
  • np.dot()
  • np.multiply()

2.一维matrix/array

 m,n=np.array([1,2]),np.array([2,3])
 a,b=np.mat([1,2]),np.mat([2,3])
2.1 使用*
 m*n
 Out: array([2, 6])
 a*b
 Out: ValueError: shapes (1,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)
 a*b.T
 Out: matrix([[8]])

在matrix格式,*出现了维度不匹配的问题,这是因为二者与我们通常理解的矩阵乘法是一致的。因此需要使用转置来解决。np.dot()也有类似情况,不再细述。

2.2 使用np.dot()
np.dot(m,n)
Out: 8
np.dot(a,b.T)
Out: matrix([[8]])
2.3 使用np.multiply()
 np.multiply(m,n)
 Out: array([2, 6])
 np.multiply(a,b)
 Out: matrix([[2, 6]])

3.多维matrix/array

以二维为例:

 m,n=np.array([[1,2],[2,3]]),np.array([[1,0],[2,1]])
 a,b=np.mat([[1,2],[2,3]]),np.mat([[1,0],[2,1]])
3.1 使用*
m*n
Out: 
array([[1, 0],
       [4, 3]])
a*b
Out: 
matrix([[5, 2],
        [8, 3]])
3.2 使用np.dot()
np.dot(m,n)
Out: 
array([[5, 2],
       [8, 3]])
np.dot(a,b)
Out: 
matrix([[5, 2],
        [8, 3]])
3.3 使用np.multiply()
np.multiply(m,n)
Out: 
array([[1, 0],
       [4, 3]])

np.multiply(a,b)
Out: 
matrix([[1, 0],
        [4, 3]])

可见对于多维数组,np.dot()和np.multiply()运算结果在数值上是相同的。

总结如下:

  • 对于array格式, *和np.multiply()结果一致;
  • 对于matrix格式,*和np.dot()结果一致(我们常规理解的矩阵运算)
  • 对于多维数组,array格式及matrix格式在np.dot()或np.multiply()运算结果在数值上是相同。