Ich brauche Eigenwert-Eigenvektor Paaren zu sortieren, im Auftrag von Eigenwert Größen absteigend, und ich manchmal (~ 03.01 der Zeit) die folgende Fehlermeldung erhalten, wenn die .Sort() Funktion aufrufen:Python: Wenn Sie list.sort() aufrufen, erhalten Sie ValueError über Mehrdeutigkeiten?
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Das Bit Code, der den Fehler generiert, auf dem eigenPairs.sort() -Aufruf:
eigenPairs = [] # list of tuples of (eigenVal, eigenVect)
for i in range(len(eigenVals)):
eigenPairs.append((eigenVals[i], eigenVects[:, i]))
eigenPairs.sort()
eigenPairs.reverse()
die eigenvals und eigenVects Variablen im Allgemeinen die Ergebnisse einer SVD auf einer Matrix implementiert in einem benutzerdefinierten Verfahren sind - die Mathematik dahinter Teil überprüft. Der komische Teil ist, dass wenn der Code funktioniert, es funktioniert - ich bekomme die erwarteten Ergebnisse.
Ergibt 'eigenVects [:, i]' keinen Fehler? Z.B. 'TypeError: Listenindizes müssen Ganzzahlen sein, nicht Tupel'? Wenn Sie die Werte von 0 bis i haben wollen, verwenden Sie 'eigenVects [: i]' – jDo
das 'für i im Bereich (len (eigenVals)):' sieht sehr unpythonisch aus. Werfen Sie einen Blick auf enumerate https://docs.python.org/2/library/functions.html#enumerate –
Können Sie angeben, wie "EigenVals" und "EigenVects" aussehen, wenn es fehlschlägt? –