操作员之间的区别是什么纽比.dot在numpy数组上工作时使用()、“*”和“@”?

2024-06-01 12:53:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python来解方程x+6y−z=0,x+2y−2z=1,−5x+2z=8。 我试着用不同的乘法运算来乘法矩阵,当使用不同的乘法运算时,答案是不同的。我想知道原因。在

import numpy as np

a= np.array([[2,6,-1],[1,2,-2],[-5,0,2]])
b= np.array([0,1,8])
a_inv= np.linalg.inv(a)
#case1
c= np.dot(a_inv,b)
print(c.shape)
#case2
print((a_inv@b).shape)
#case3
print((a_inv*b).shape)

case1和case2给出了正确的输出,但是case3没有。 输出: 案例1: (3,) 案例2: (3,) 案例3: (3,3)


Tags: 答案importnumpynp原因矩阵array案例
1条回答
网友
1楼 · 发布于 2024-06-01 12:53:44

numpy中的*运算符不同于矩阵乘法。当您执行a_inv * b(在您的例子中),您将创建一个3x3数组,如下所示:

[[a[0,0] * b[0], a[0,1] * b[0], a[0,2] * b[0]],
 [a[1,0] * b[1], a[1,1] * b[1] ...]] #etc.

dot开始,您可以用np.matmul(a_inv, b)进行矩阵乘法,也可以使用np.matrix显式地告诉numpy您的数组是矩阵:

^{pr2}$

相关问题 更多 >