linalg.eig(A)を使用して、行列の固有値と固有ベクトルを取得しています。これらの固有値(および関連するベクトル)を順番に並べ替える簡単な方法はありますか?
質問する
13680 次
2 に答える
7
sort()
NumPyとargsort()
関数を使用したい。argsort()
配列の並べ替えに必要なインデックスの順列を返すため、固有値の大きさで並べ替える場合(NumPy配列の標準の並べ替えは最小から最大のようです)、次のように実行できます。
import numpy as np
A = np.asarray([[1,2,3],[4,5,6],[7,8,9]])
eig_vals, eig_vecs = np.linalg.eig(A)
eig_vals_sorted = np.sort(eig_vals)
eig_vecs_sorted = eig_vecs[:, eig_vals.argsort()]
# Alternatively, to avoid making new arrays
# do this:
sort_perm = eig_vals.argsort()
eig_vals.sort() # <-- This sorts the list in place.
eig_vecs = eig_vecs[:, sort_perm]
于 2012-04-10T06:09:02.393 に答える
-3
np.linalg.eig
多くの場合、複素数値を返します。の使用を検討することをお勧めしnp.sort_complex(eig_vals)
ます。
于 2016-09-07T04:06:40.100 に答える