Numpy转置乘法问题
我尝试用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
但是在把testmatrix
和它的转置相乘时,我遇到了一个错误:ValueError: shape mismatch: objects cannot be broadcast to a single shape
。
在MatLab中,这个乘法是可以正常工作的,但我需要在Python应用中使用它。
有人能告诉我我哪里出错了吗?
3 个回答
1
另一种方便表示这个操作的方法是 testmatrix @ testmatrix.T
。
在numpy中,@
这个符号表示矩阵相乘,你可以在这里查看相关信息。
8
你正在使用逐元素相乘,也就是在两个Numpy矩阵上用*
这个符号进行的操作,这个操作在Matlab中相当于.*
这个符号。你可以使用
prod = numpy.dot(testmatrix, testmatrix.T)