Seite 1 von 1

2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 13:01
von Eneri_Gnats
Hallo Zusammen,

ich habe eine Frage, die für die meisten vermutlich einfach zu beantworten ist.
Ich möchte aus 2 Listen mit der selben Länge ein array machen

liste1 = [0,1,2,3,4]
Liste2 = [4,6,2,8,7]

zu array: 2 Spalten und 5 Zeilen
anschließend soll das array sortiert werden nach liste 2 dabei sollen die werte in liste 1 auch die Position ändern also:
array:
3 8
4 7
1 6
0 4
2 2

ich hoffe es kann mir jemand helfen.

Viele Grüße

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 13:07
von Bolitho
z.B. RealPython kann dir helfen :)
Schau dir mal die zip-Funktion an

https://realpython.com/python-zip-function/

Für dein Array stehen mehrere Datentypen zur Verfügung. z.B.: Listen, Tuple, Dictionaries, und Sets. Was davon jetzt genau die richtige Wahl ist, hängt von der Verwendung ab.

Falls du damit Probleme hast, zeigt gerne wie weit du gekommen bist. Den Rest schaffen wir dann zusammen.

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 13:21
von Eneri_Gnats
Ich habe bisher folgendes:

pi_flow = [8,9,2,3,6,1]
indexlist = list(range(len(pi_flow)))
pi_sort = np.array([pi_flow, indexlist])

und dabei habe ich dann ein array mit 2 Zeilen und 6 Spalten ich hätte aber gerne 6 Zeilen und 2 Spalten.
und sortieren will ich das ganze auch noch

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 13:22
von __blackjack__

Code: Alles auswählen

In [68]: sorted(zip([0, 1, 2, 3, 4], [4, 6, 2, 8, 7]), key=lambda p: p[1], reverse=True)                                                               
Out[68]: [(3, 8), (4, 7), (1, 6), (0, 4), (2, 2)]

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 13:53
von Eneri_Gnats
was ich dabei bekomme ist eine liste mit einem Elemtent "tuple" in welchem 2 listen sind die nicht sortiert sind. habe ich vllt vorher schon was falsch gemacht?
die eine liste sieht so aus: pi_flow = list(np.sum(result_pi_flow_out_line, axis=0)) - eine liste mit 6 Elementen
die 2. liste so: indexlist = list(range(len(pi_flow)))

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 13:55
von Eneri_Gnats
bzw ich bekomme eine liste mit 6 elementen die tuple sind. ich hätte gerne ein array

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 14:12
von Sirius3
@Eneri_Gnats: __blackjack__ hat Dir doch gezeigt, wie man mit purem Python das Problem löst, wenn die erste Liste immer eine Index-Liste ist, geht das sogar noch einfacher:

Code: Alles auswählen

sorted(enumerate([4, 6, 2, 8, 7]), key=lambda p: p[1], reverse=True)
Wenn Du mit Numpy arbeiten willst, was Du aber bisher nie explizit gefordert hast:

Code: Alles auswählen

data = np.array([4,6,2,8,7])
indices = data.argsort()
sorted_data = np.vstack([indices, data[indices]])

Re: 2 Listen zu einem Array sortieren

Verfasst: Montag 2. März 2020, 14:26
von Eneri_Gnats
ich bin python anfänger darum danke für die verschiedenen Ansätze. Ich habe es jetzt auch ohne numpy (ja das wars was ich gesucht habe) geschafft. Danke Danke :)