解决Python中的numpy对象不匹配错误
我在用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)
数组和矩阵之间有一个区别,就是在矩阵上用 *
是进行矩阵乘法,而在数组上用 *
是逐个元素相乘。