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
2 Listen zu einem Array sortieren
-
- User
- Beiträge: 219
- Registriert: Donnerstag 21. Juli 2011, 07:01
- Wohnort: Stade / Hamburg
- Kontaktdaten:
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.
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.
-
- User
- Beiträge: 20
- Registriert: Freitag 14. Februar 2020, 11:17
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
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
- __blackjack__
- User
- Beiträge: 13103
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
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)]
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 20
- Registriert: Freitag 14. Februar 2020, 11:17
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)))
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)))
-
- User
- Beiträge: 20
- Registriert: Freitag 14. Februar 2020, 11:17
bzw ich bekomme eine liste mit 6 elementen die tuple sind. ich hätte gerne ein array
@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:
Wenn Du mit Numpy arbeiten willst, was Du aber bisher nie explizit gefordert hast:
Code: Alles auswählen
sorted(enumerate([4, 6, 2, 8, 7]), key=lambda p: p[1], reverse=True)
Code: Alles auswählen
data = np.array([4,6,2,8,7])
indices = data.argsort()
sorted_data = np.vstack([indices, data[indices]])
-
- User
- Beiträge: 20
- Registriert: Freitag 14. Februar 2020, 11:17
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