numpy乘积运算

本文通过例子,对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()运算结果在数值上是相同的。

总结如下:

类型/运算 * np.dot() np.multiply()
一维np.array 对应位置元素相乘 内积形式 对应位置元素相乘
一维np.mat 通常理解的矩阵乘法 通常理解的矩阵乘法 对应位置元素相乘
多维np.array 对应位置元素相乘 通常理解的矩阵乘法 对应位置元素相乘
多维np.mat 通常理解的矩阵乘法 通常理解的矩阵乘法 对应位置元素相乘

你可能感兴趣的:(深度学习,numpy,matplotlib,opencv,pandas,python,numpy)