Sortierungsproblem mit NumPy
Verfasst: Freitag 23. Mai 2014, 13:24
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']]
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']]