web-dev-qa-db-ja.com

ゴツゴツした転置乗算問題

行列の固有値にその転置を掛けたものを見つけようとしましたが、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 shapetestmatrixにその転置を掛けるとき。

これはMatLabでは機能しますが(コードではなく乗算)、pythonアプリケーションで使用する必要があります。

誰かが私が間違っていることを教えてもらえますか?

19
Virgiliu

MATLABを知っているので、この tutorial が役立つ場合があります。

また、testmatrixdot()関数を掛けてみてください。つまり、numpy.dot(testmatrix,testmatrix.T)

どうやら numpy.dot は、行列の乗算のために配列間で使用されます! *演算子は要素ごとの乗算用です(.* MATLABで)。

20
Jacob

要素ごとの乗算を使用しています。2つのNumpy行列の*演算子は、Matlabの.*演算子と同等です。使用する

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