python中np.multiply()、np.dot()、"*"、np.matmul()的区别与联系

numpy中np.multiply()、np.dot()、" * "、np.matmul()的区别与联系

类别 np.multiply np.dot() " * " np.matmul()
数组 对应位置相乘,
输出与原数组大小一致
秩为1(内积运算),
执行对应位置相乘,
然后再相加;
秩不为1的,
执行矩阵乘法运算;
对应位置相乘 矩阵乘法运算
做内积
矩阵 对应位置相乘,
输出与原矩阵大小一致
执行矩阵乘法运算 矩阵乘法运算 矩阵乘法运算
数组运算 a = array([[1, 2], [3, 4]])
b = array([[0, 1], [2, 3]])
np.multiply(a,b)
秩不为1
a = array([[1, 2], [3, 4]])
b = array([[0, 1], [2, 3]])
np.dot(a,b) ;
秩为1,
c = array([1, 2, 3])
d = array([0, 1, 2])
np.dot(c,d)
#对应位置相乘,再求和
a= array([[1,2],[3, 4]])
b= array([[0, 1], [2, 3]])
a*b
a = array([[1, 2],
[3, 4]])
b = array([[0, 1],
[2, 3]])
np.matmul(a,b)
输出 array([[ 0, 2], [ 6, 12]]) array([[ 4, 7], [ 8, 15]]) ;
8
array([[ 0, 2], [ 6, 12]]) array([[ 4, 7],
[ 8, 15]])
矩阵运算 np.multiply(np.mat(a)
,np.mat(b))
np.dot(np.mat(a),np.mat(b)) #执行矩阵乘法 (np.mat(a))*(np.mat(b)) np.matmul
(np.mat(a),np.mat(b))
输出 matrix([[ 0, 2], [ 6, 12]]) matrix([[ 4, 7], [ 8, 15]]) matrix([[ 4, 7], [ 8, 15]]) matrix([[ 4, 7],
[ 8, 15]])

特别提示:

np.dot:
数组中如果a或者b中有一个是标量,则np.dot等同于np.multiply()或者" * "
如果a是N-D数组,b是1-D数组,答案是,a和b最后一个轴的乘积
例:

# 2-D array: 2 x 3
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([1,2,3])
result_ab =  np.dot(a,b)
print('result_ab:\n %s' %(result_ab))

结果:

result_ab:
 [14 32]

你可能感兴趣的:(python中np.multiply()、np.dot()、"*"、np.matmul()的区别与联系)