Seite 1 von 1

Array nach einem bestimmten Wert durchsuchen und anschließend von diesem Wert aus neu ordnen

Verfasst: Sonntag 26. April 2020, 09:02
von NinoBaumann
Hallo an alle potentiellen Helfer ^^,

ich habe ein Problem, bei dem ich eure Hilfe gut gebrauchen könnte. Ich habe einen zweispaltigen Array. Dieser kann beliebig viele Zeilen aber nur zwei Spalten haben. Bei diesem Array möchte ich die erste Spalte nach einem bestimmten Wert, dieser ist mir vorher schon bekannt, durchsuchen. Dann möchte ich den Array so neu ordnen, dass dieser Wert, zusammen mit seinem zugehörigen Wert aus der zweiten Spalte, ganz oben steht. Darunter sollen die Wert stehen die auch im vorherigen Array nach diesem kamen und darunter sollen die Werte stehen, die im vorherigen Array darüber standen. Weil die Beschreibung des Problems doch recht komplex zu verstehen ist, habe ich euch unten ein Beispiel gemacht^^
Ich hoffe, dass mir jemand bei diesem Problem helfen kann und danke schon mal im Voraus!

Viele Grüße
Nino

bestimmter Wert = x4

alter Array neuer Array
X / Y X / Y

x1 / y1 x4 / y4
x2 / y2 x5 / y5
x3 / y3 x6 / y6
x4 / y4 x1 / y1
x5 / y5 x2 / y2
x6 / y6 x3 / y3

Re: Array nach einem bestimmten Wert durchsuchen und anschließend von diesem Wert aus neu ordnen

Verfasst: Sonntag 26. April 2020, 10:08
von Sirius3
Ein Beispiel mit realen Daten wäre besser, dann könnte man auch gleich sehen, welches Format sie wirklich haben. Es gilt, wie immer, das Problem in verschiedene Schritte herunterbrechen und jedes einzeln lösen. 1. Index finden. 2. Daten verändern. Und für alles haben Arrays schon passende Methoden.

Code: Alles auswählen

In [1]: import numpy as np 

In [2]: daten = np.arange(10).reshape(-1, 2)                                                                                                                                       

In [3]: daten                                                                                                                                                                      
Out[3]: 
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7],
       [8, 9]])

In [4]: (daten[:,0]==4).nonzero()                                                                                                                                                  
Out[4]: (array([2]),)

In [5]: index = (daten[:,0]==4).nonzero()[0][0]                                                                                                                                    

In [6]: np.roll(daten, -index, axis=0)                                                                                                                                             
Out[6]: 
array([[4, 5],
       [6, 7],
       [8, 9],
       [0, 1],
       [2, 3]])

Re: Array nach einem bestimmten Wert durchsuchen und anschließend von diesem Wert aus neu ordnen

Verfasst: Montag 27. April 2020, 08:24
von NinoBaumann
Hey Sirius,

danke für die schnelle Antwort.
Okay gut, das merke ich mir dann, wenn ich das nächste mal eine Frage poste :)

Grüße
Nino