1. ホーム
  2. python

[解決済み] Pythonでnumpy.linalg.eigを使用した後の固有値と関連する固有ベクトルのソート

2022-05-14 04:14:14

質問

numpy.linalg.eigを使って、固有値と固有ベクトルのリストを取得しています。

A = someMatrixArray
from numpy.linalg import eig as eigenValuesAndVectors

solution = eigenValuesAndVectors(A)

eigenValues = solution[0]
eigenVectors = solution[1]

私は固有値を(例えば最低から最高まで)ソートしたいのですが、ソート後に関連する固有ベクトルが何であるかを知ることができる方法です。

Pythonの関数でそれを行う方法を見つけることができません。何か簡単な方法があるのでしょうか、それとも私のソートバージョンをコード化する必要があるのでしょうか?

どのように解決するのですか?

使用方法 numpy.argsortを使用します。 . これは、配列をソートするために使用するインデックスを返します。

import numpy as np
import numpy.linalg as linalg

A = np.random.random((3,3))
eigenValues, eigenVectors = linalg.eig(A)

idx = eigenValues.argsort()[::-1]   
eigenValues = eigenValues[idx]
eigenVectors = eigenVectors[:,idx]

固有値が複素数である場合 の場合、ソート順は辞書式となります。 になります (つまり、複素数は実数部でソートされ、虚数部で同順位になります)。