23

我试图找到矩阵的特征值乘以其转置,但我无法使用 numpy.

testmatrix = numpy.array([[1,2],[3,4],[5,6],[7,8]])
prod = testmatrix * testmatrix.T
print eig(prod)

我希望得到产品的以下结果:

5    11    17    23
11    25    39    53
17    39    61    83
23    53    83   113

和特征值:

0.0000
0.0000
0.3929
203.6071

相反,我ValueError: shape mismatch: objects cannot be broadcast to a single shape在乘以testmatrix它的转置时得到了。

这在 MatLab 中有效(乘法,而不是代码),但我需要在 python 应用程序中使用它。

有人可以告诉我我做错了什么吗?

4

2 回答 2

27

由于您了解 MATLAB,因此您可能会发现本教程很有用。

另外,尝试testmatrixdot()函数相乘,即numpy.dot(testmatrix,testmatrix.T)

显然numpy.dot是在数组之间用于矩阵乘法!该*运算符用于逐元素乘法(.*在 MATLAB 中)。

于 2010-07-09T13:42:40.870 回答
8

您正在使用逐元素乘法 -*两个 Numpy 矩阵上的运算符等效.*于 Matlab 中的运算符。采用

prod = numpy.dot(testmatrix, testmatrix.T)
于 2010-07-09T13:44:46.717 回答