Ich verwende numpy.linalg.eig, um eine Liste von Eigenwerten und Eigenvektoren zu erhalten:
A = someMatrixArray
from numpy.linalg import eig as eigenValuesAndVectors
solution = eigenValuesAndVectors(A)
eigenValues = solution[0]
eigenVectors = solution[1]
Ich möchte meine Eigenwerte (z. B. vom niedrigsten zum höchsten) so sortieren, dass ich weiß, was der zugehörige Eigenvektor nach dem Sortieren ist.
Ich finde keine Möglichkeit, dies mit Python-Funktionen zu tun. Gibt es eine einfache Möglichkeit oder muss ich meine Sortierversion codieren?
idx = eigenValues.argsort()[::-1]
.eigenVectors[:, eigenValues.argmax()]
Die obige Antwort von unutbu ist sehr klar und prägnant. Aber hier ist eine andere Möglichkeit, die allgemeiner ist und auch für Listen verwendet werden kann.
Dieses tup [0] ist der Eigenwert, nach dem die Sortierfunktion die Liste sortiert.
reverse = False dient zur Erhöhung der Reihenfolge.
quelle
Der Code des Ubuntu funktioniert auf meinem Python 3.6.5 nicht. Es führt zu Laufzeitfehlern. Also habe ich seinen Code in diesen Code umgestaltet, der in meinen Testfällen einwandfrei funktioniert:
quelle