import numpy as np
from scipy import linalg as linalg
M = np.array([[1,2],[2,1],[3,4],[4,3]])
Evals, Evecs = linalg.eigh(M.T.dot(M))
EvecShape = Evecs.shape
print Evals
print Evecs
ncols = EvecShape[1]
for i in range(ncols/2):
Evals[i], Evals[ncols-1-i] = Evals[ncols-1-i], Evals[i]
Evecs[:,i], Evecs[:,ncols-1-i] = Evecs[:,ncols-1-i], Evecs[:,i]
print Evals
print Evecs
MT * Mの固有値と固有ベクトルを計算し、対応する列をスワップすることで固有値を降順で並べ替える必要があります。np.arrayの2つの列を交換するとき、ここで何が起こっていますか?
[ 2. 58.]
[[-0.70710678 0.70710678]
[ 0.70710678 0.70710678]]
[ 58. 2.]
[[ 0.70710678 0.70710678]
[ 0.70710678 0.70710678]]
私はEvalsの要素を入れ替えたようです。しかし、Evecsにとって、何かが間違っていることは明らかです。誰が私にここで何が起こっているか教えてもらえますか?