绕过,python中的numpy对象不匹配错误

时间:2011-07-19 06:35:27

标签: python arrays matrix numpy mismatch

我在使用numpy在python中乘以两个大矩阵时遇到了问题。

我有一个(15,7)矩阵,我希望将它乘以它的转置,即AT(7,15)* A(15 * 7),并且数学上这应该有效,但是我得到一个错误:

ValueError:形状不匹配:无法将对象广播为单个形状 我在Python中使用numpy。我怎么能绕过这个,有人请帮忙!

1 个答案:

答案 0 :(得分: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)

数组和矩阵之间的一个区别是矩阵上的*是矩阵乘积,而在数组上它是元素乘积。