# =============================================================================
python中矩阵运算分为两种形式,一是np.array,而是np.matrix
# =============================================================================
# =============================================================================
对于np.array
数量积(即对应位置元素相乘后的积相加)使用*(或者multiply)
矩阵乘法,即矢量乘法,则必须使用.dot()或者@
# =============================================================================
# =============================================================================
对于np.matrix(情况相反)
* 和@和.dot()表示的是矢量积,
数量积方式运行,则必须使用np.multiply函数
# =============================================================================
# =============================================================================
# 对于array对象,*和np.multiply函数代表的是数量积,如果希望使用矩阵的乘法规则,则应该调用np.dot和@。
# 对于matrix对象,*和@和.dot()直接代表了原生的矩阵乘法,而如果特殊情况下需要使用数量积,则应该使用np.multiply函数。
# =============================================================================
import numpy as np
a=np.array([[1,2],[3,4]])
b=np.array([[4,3],[2,1]])
c=np.matrix([[1,2],[3,4]])
d=np.matrix([[4,3],[2,1]])
#矩阵乘法ab结果为8,5,20,13
#矩阵乘法ab结果为13,20,5,8
#数量积结果为4,6,6,4
# =============================================================================
对于np.array
a*b#结果为4,6,6,4
b*a#结果为4,6,6,4
np.multiply(a,b)#结果为4,6,6,4
a.dot(b)#结果为8,5,20,13
b.dot(a)#结果为13,20,5,8
a@b#结果为8,5,20,13
b@a#结果为13,20,5,8
# =============================================================================
对于np.matrix
c*d#结果为8,5,20,13
d*c#结果为13,20,5,8
c.dot(d)#结果为8,5,20,13
b.dot(a)#结果为13,20,5,8
c@d#结果为8,5,20,13
d@c#结果为13,20,5,8
np.multiply(c,d)#结果为4,6,6,4
# =============================================================================