为什么相同的符号对矩阵和矩阵的乘法都像矩阵乘法那样对元素进行明智的乘法运算?

时间:2018-08-23 08:58:06

标签: python numpy

在下面的代码中,为什么相同的符号*对矩阵和数组表现出不同的行为?为什么在矩阵情况下为什么不显示逐元素乘法?

a= np.arange(2*3).reshape(2,3)
print(a)
b= np.array([[0,0,0],[1,1,1]])
print(b)
c= a*b
print(c)


d=np.matrix([[1,2],[3,4]])
e= np.matrix([[0,0],[1,1]])
f= d*e
print("d: ",d,"e: ",e)
print(f)

1 个答案:

答案 0 :(得分:3)

numpy矩阵严格是二维的,而numpy数组(ndarray)是N维的。矩阵对象是ndarray的子​​类,因此它们继承了ndarray的所有属性和方法。 Ndarray几乎所有操作都巧妙地应用。

numpy矩阵的主要优点是它们为矩阵乘法提供了一种方便的表示法:如果a和b是矩阵,则a * b是它们的矩阵乘积(不是元素)。通过np.matrix获得np.multiply(a,b)的元素操作。

从Python 3.5开始,NumPy支持使用@运算符进行中缀矩阵乘法。因此,np.matrix的{​​{1}}产品等于*的{​​{1}}产品。在您的代码中:

np.array