Seite 1 von 1

Numpy Matrix filtern

Verfasst: Sonntag 1. Oktober 2023, 10:42
von scandium
Hallo Zusammen,

ich bekomme aus einer Rechnung Ergebnisse, die ich gerne der Größe nach filtern möchte.
Konkret möchte ich die Y-Values der Größe nach sortieren und dabei mir die dazugehörigen X -Values ausgeben lassen.
Ich habe es mit
argsort
wie im Beispiel Code beschrieben versucht, jedoch nicht mit dem gewünschten Erfolg.

Hat jemand eine Idee, wie man es besser machen könnte?
Vielen Dank.

Code: Alles auswählen

import numpy as np

x_values=np.array([1,2,3,4,5,6])
y_values=np.array([1,4,6,8,9,2])
x = np.append(x_values,y_values).reshape((2,6))
# x[x[:, 1].argsort()]

Re: Numpy Matrix filtern

Verfasst: Sonntag 1. Oktober 2023, 11:43
von Sirius3
Am Anfang schreibst Du, Du hast x- und y-Werte, dann aber sortierst Du den zweiten Wert von x und den zweiten Wert von y.
Wenn etwas nicht so funktioniert wie gewünscht, muß man den komplizierten Ausdruck in einfache aufteilen, also erst mal

Code: Alles auswählen

print(x[:, 1])

Re: Numpy Matrix filtern

Verfasst: Sonntag 1. Oktober 2023, 18:43
von scandium
Habe mich jetzt mal von innen nach außen durch iteriert & nun funktioniert es:

Code: Alles auswählen

import numpy as np

x_values=np.array([3,2,3,4,6,5])
y_values=np.array([1,4,6,8,9,2])
x = np.append(x_values,y_values).reshape((2,6))
x[0,:][x[1,:].argsort()]
Ausgabe: array([3, 5, 2, 3, 4, 6])


Danke.

Re: Numpy Matrix filtern

Verfasst: Sonntag 1. Oktober 2023, 19:05
von Sirius3
Das mit dem reshape ist nicht schön, richtig wäre vstack:

Code: Alles auswählen

x = np.vstack([x_values, y_values])
Da Du gar nicht die Kombination aus x- und y-Werten brauchst, kannst Du das weiter deutlich vereinfachen:

Code: Alles auswählen

x_values[y_values.argsort()]

Re: Numpy Matrix filtern

Verfasst: Sonntag 1. Oktober 2023, 20:09
von scandium
Danke, das ist noch besser.