Numpy转置乘法问题

Vir*_*liu 19 python numpy scipy eigenvalue

我试图找到一个矩阵的特征值乘以它的转置,但我不能用numpy做.

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

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

5    11    17    23
11    25    39    53
17    39    61    83
23    53    83   113
Run Code Online (Sandbox Code Playgroud)

和特征值:

0.0000
0.0000
0.3929
203.6071
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jac*_*cob 22

您可能会发现本教程很有用,因为您了解MATLAB.

另外,尽量乘testmatrixdot()功能,即numpy.dot(testmatrix,testmatrix.T)

显然numpy.dot是在数组之间用于矩阵乘法!该*操作者为(逐元素乘法.*在MATLAB).

  • PEP 465允许使用infix`@`运算符:`mat1 @ mat2` (2认同)

pto*_*ato 6

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

prod = numpy.dot(testmatrix, testmatrix.T)
Run Code Online (Sandbox Code Playgroud)