我在将两个矩阵与numpy相乘时遇到麻烦

时间:2019-09-17 14:03:58

标签: python-3.x numpy

我正在尝试使用numpy将两个矩阵相乘:

import numpy as np

A = np.array([[1, 3, 2], [4, 0, 1]])
B = np.array([[1, 0, 5], [3, 1, 2]])

我使用矩阵乘法公式测试了过程并手动运行计算。因此,在这种情况下,我将首先乘以[1, 0, 5] x A,结果为[11, 9],然后再乘以[3, 1, 2] x B,结果为[10, 14]。最后,此乘法的乘积为[[11, 9], [10, 14]]

尽管如此,当我使用numpy将这些矩阵相乘时,出现了错误:

ValueError: shapes (2,3) and (2,3) not aligned: 3 (dim 1) != 2 (dim 0)

有没有办法用python成功做到这一点?

1 个答案:

答案 0 :(得分:1)

请阅读matrix multiplication in numpy上的文档,尤其是有关行为的文档。

  

行为通过以下方式取决于参数。

     

如果两个参数都是二维的,则它们像常规的那样相乘   矩阵。如果任一参数为N-D,N> 2,则将其视为堆栈   最后两个索引中的矩阵的分布并进行广播   相应地。如果第一个参数是1-D,则将其提升为矩阵   在其尺寸前面加上1。矩阵相乘后   前置1被删除。如果第二个参数是1-D,则将其提升   通过将1附加到矩阵的尺寸来将其添加到矩阵。后矩阵   附加的1被删除。

要获得输出,请尝试在转乘前进行转置?

c=np.matmul(A,B.transpose())

array([[11, 10],
       [ 9, 14]])