我在使用numpy在python中乘以两个大矩阵时遇到了问题。
我有一个(15,7)矩阵,我希望将它乘以它的转置,即AT(7,15)* A(15 * 7),并且数学上这应该有效,但是我得到一个错误:
ValueError:形状不匹配:无法将对象广播为单个形状 我在Python中使用numpy。我怎么能绕过这个,有人请帮忙!
答案 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)
数组和矩阵之间的一个区别是矩阵上的*
是矩阵乘积,而在数组上它是元素乘积。