Hey Leute.
Ich möchte mit NumPy folgenden Input nach den Werten aus der 1. Zeile absteigend sortieren. Die restlichen (jeweils zugehörigen) Werte in der Spalte sollen „mit rutschen“. Mein Output passt fast, nur dass die niedrigste Wert (in der ersten Zeile) ganz vorne steht, dann kommt der Höchste, usw. Die vordere Spalte müsste also eigentlich ganz rechts stehen (niedrigster Wert ganz rechts da eben absteigend sortiert werden soll).
In dem Schritt „idx=-np.argsort(arraysort)“ macht er nen Fehler rein. Vorher ist die Sortierung noch richtig. Könnte sich das jemand bitte mal anschauen und mir sagen, wo da der Fehler liegt, bzw. wie ich das richtig anstelle, oder es vielleicht besser geht?
Input:
[['1' '2' '4' '5' '6' '7' '8' '10' '11' '12']
['25.18' '27.32' '28.19' '32.53' '33.18' '18.29' '20.56' '21.04' '24.14'
'19.56']
['650' '0' '0' '0' '1120' '790' '950' '820' '0' '950']
['650' '0' '0' '0' '1120' '790' '950' '820' '0' '950']
['650' '0' '0' '0' '1120' '790' '950' '820' '0' '950']
['650' '0' '320' '680' '0' '790' '950' '820' '0' '950']
['650' '0' '320' '680' '0' '790' '950' '820' '0' '950']
['650' '0' '320' '0' '0' '790' '950' '820' '0' '950']
['650' '0' '0' '0' '1120' '790' '950' '820' '0' '950']
['650' '0' '0' '0' '0' '790' '950' '820' '0' '950']
['650' '0' '0' '0' '1120' '790' '950' '820' '0' '950']
['650' '0' '0' '0' '1120' '790' '950' '820' '0' '950']]
array=data_f[1]
arraysort=np.argsort(array) -> hier ist die Sortierung noch richtig!
idx=-np.argsort(arraysort) -> der Output dieser Zeile stimmt nicht mehr!
arraysort_final=data_f[:,idx]
Output:
[['7' '6' '5' '4' '2' '1' '11' '10' '8' '12']
['18.29' '33.18' '32.53' '28.19' '27.32' '25.18' '24.14' '21.04' '20.56'
'19.56']
['790' '1120' '0' '0' '0' '650' '0' '820' '950' '950']
['790' '1120' '0' '0' '0' '650' '0' '820' '950' '950']
['790' '1120' '0' '0' '0' '650' '0' '820' '950' '950']
['790' '0' '680' '320' '0' '650' '0' '820' '950' '950']
['790' '0' '680' '320' '0' '650' '0' '820' '950' '950']
['790' '0' '0' '320' '0' '650' '0' '820' '950' '950']
['790' '1120' '0' '0' '0' '650' '0' '820' '950' '950']
['790' '0' '0' '0' '0' '650' '0' '820' '950' '950']
['790' '1120' '0' '0' '0' '650' '0' '820' '950' '950']
['790' '1120' '0' '0' '0' '650' '0' '820' '950' '950']]
Sortierungsproblem mit NumPy
@E1986: Du sortierst die ”sortierten” Indizes, was irgendwie keinen Sinn macht, denn diese Sortierung hat ja rein gar nichts mit den Werten in dem ursprünglichen Array zu tun. Du willst das Ergebnis vom ersten `argsort()` ”spiegeln”. Schau Dir mal `numpy.fliplr()` an.