Python编程矩阵相乘问题

在做Python矩阵相乘的时候
有一个矩阵x=[3.5 5.1]
一个矩阵y=[-1.]
做矩阵相乘np.dot(y,x)
报错:
shape(1,)and shape(2,)not aligned :1 (dim 0)!=2(dim 0)
请问是什么问题呢?

该回答引用NewBing

你好,这是Bing。😊


这个问题可能是因为你的矩阵x和y的形状不匹配。矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数,但是你的x有2列,而y只有1行①。


你可以尝试把y转置成一个2维矩阵,或者用np.array而不是np.matrix来创建x和y①。


源: 与必应的对话, 2023/3/22

我:还有其他可能导致这个错误的原因吗?

有可能。如果你用pandas的对象做矩阵乘法,也可能会出现这个错误。这是因为pandas会根据索引来对齐数据,而不是根据形状①。你可以在做矩阵乘法之前,把pandas对象转换成numpy数组①。


还有一种情况是,如果你用np.dot来做矩阵乘法,而不是用@运算符或者np.matmul函数,也可能会出现这个错误。这是因为np.dot在处理高维数组时,会按照最后两个轴来做乘法,而不是按照标准的矩阵乘法规则②。你可以用@运算符或者np.matmul函数来避免这个问题②。


源: 与必应的对话, 2023/3/22