Numpy转置乘法问题

时间:2010-07-09 13:38:52

标签: python numpy scipy eigenvalue

我试图找到一个矩阵的特征值乘以它的转置,但我不能用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应用程序中使用它。

有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:18)

您可能会发现这个tutorial很有用,因为您了解MATLAB。

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

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

答案 1 :(得分:3)

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

prod = numpy.dot(testmatrix, testmatrix.T)