Python Numpy转置乘法问题
我试图找到一个矩阵的特征值乘以它的转置,但我不能用numpyPython Numpy转置乘法问题,python,numpy,scipy,eigenvalue,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
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:形状不匹配:当testmatrix
与其转置相乘时,对象无法广播到单个形状
这在MatLab中起作用(乘法,而不是代码),但我需要在python应用程序中使用它
有人能告诉我我做错了什么吗?你可能会发现这很有用,因为你知道MATLAB
另外,尝试将testmatrix
与dot()
函数相乘,即numpy.dot(testmatrix,testmatrix.T)
显然是在数组之间使用矩阵乘法!*
运算符用于元素相乘(*
在MATLAB中)。您使用的是元素相乘-两个Numpy矩阵上的*
运算符与MATLAB中的*
运算符等效。使用
prod = numpy.dot(testmatrix, testmatrix.T)
PEP 465允许使用中缀@
运算符:mat1@mat2