解决Python中的numpy对象不匹配错误

4 投票
1 回答
9143 浏览
提问于 2025-04-16 21:49

我在用Python的numpy库乘两个大矩阵时遇到了问题。

我有一个(15,7)的矩阵,我想把它和它的转置矩阵相乘,也就是AT(7,15)*A(15,7)。从数学上讲,这样做是可以的,但我却遇到了一个错误:

ValueError:形状不匹配:对象无法广播到单一形状

我在Python中使用numpy。请问我该怎么解决这个问题,有谁能帮帮我吗!

1 个回答

14

你可能把矩阵表示成数组。你可以用 np.asmatrix 把它们转换成矩阵,或者用 np.dot 来进行矩阵乘法:

>>> X = np.random.rand(15 * 7).reshape((15, 7))
>>> X.T * X
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (7,15) (15,7)
>>> np.dot(X.T, X).shape
(7, 7)
>>> X = np.asmatrix(X)
>>> (X.T * X).shape
(7, 7)

数组和矩阵之间有一个区别,就是在矩阵上用 * 是进行矩阵乘法,而在数组上用 * 是逐个元素相乘。

撰写回答