Ich versuche alle meine Codes in Python zu konvertieren. Ich möchte ein Array mit zwei Spalten sortieren, so dass die Sortierung auf der zweiten Spalte in aufsteigender Reihenfolge basieren muss. Dann muss ich die Daten der ersten Spalte summieren (von der ersten Zeile bis zur 100. Zeile). Ich habe "Data.sort (axis = 1)" verwendet, aber es funktioniert nicht. Hat jemand eine Idee, um dieses Problem zu lösen?Wie 2D Array (numpy.darray) basierend auf der zweiten Spalte in Python zu sortieren?
17
A
Antwort
2
sorted(Data, key=lambda row: row[1])
sollte es tun.
36
Verwenden Sie .argsort()
es gibt eine numpy.array
von Indizes, die die angegebenen numpy.array
sortieren. Sie nennen es als eine Funktion oder als eine Methode für Ihr Array. Zum Beispiel: Angenommen, Sie
import numpy as np
arr = np.array([[-0.30565392, -0.96605562],
[ 0.85331367, -2.62963495],
[ 0.87839643, -0.28283675],
[ 0.72676698, 0.93213482],
[-0.52007354, 0.27752806],
[-0.08701666, 0.22764316],
[-1.78897817, 0.50737573],
[ 0.62260038, -1.96012161],
[-1.98231706, 0.36523876],
[-1.07587382, -2.3022289 ]])
Sie haben jetzt .argsort()
auf der Spalte, die Sie sortieren möchten anrufen können, und es wird Ihnen eine Reihe von Zeilenindizes geben, die Art, dass bestimmte Spalte, die Sie als Index passieren können, um Ihre Original-Array.
>>> arr[arr[:, 1].argsort()]
array([[ 0.85331367, -2.62963495],
[-1.07587382, -2.3022289 ],
[ 0.62260038, -1.96012161],
[-0.30565392, -0.96605562],
[ 0.87839643, -0.28283675],
[-0.08701666, 0.22764316],
[-0.52007354, 0.27752806],
[-1.98231706, 0.36523876],
[-1.78897817, 0.50737573],
[ 0.72676698, 0.93213482]])
Sie äquivalente numpy.argsort()
>>> arr[np.argsort(arr[:, 1])]
array([[ 0.85331367, -2.62963495],
[-1.07587382, -2.3022289 ],
[ 0.62260038, -1.96012161],
[-0.30565392, -0.96605562],
[ 0.87839643, -0.28283675],
[-0.08701666, 0.22764316],
[-0.52007354, 0.27752806],
[-1.98231706, 0.36523876],
[-1.78897817, 0.50737573],
[ 0.72676698, 0.93213482]])
+1
Warum die down vote? – JaminSore
Verwandte Themen
- 1. wie 2d Array für Zeile in Python zu sortieren?
- 2. Java. 2d Array sortieren nach Spalte
- 3. Java: ein Array basierten 2D-Sortierung auf die Werte der zweiten Spalte
- 4. sortieren 2d numpy Array lexikografisch
- 5. Sortieren 2D-Array in PHP
- 6. Sortieren CSV basierend auf einer bestimmten Spalte?
- 7. ein Array von Paaren in einen 2D-Array basierend auf erster Spalte
- 8. Sortieren basierend auf der ersten Spalte und dann nächste Spalte
- 9. wie das in Python (Perl-Snippet, um ein 2D-Array zu sortieren)
- 10. Sortieren CSV-Datei basierend auf der ersten Spalte
- 11. Sortieren von Dokumenten basierend auf Array-Feldgröße
- 12. Sortieren Array basierend auf zwei Parametern
- 13. Sortieren Array basierend auf Objekt Attribut - Javascript
- 14. PHP mehrdimensionales Array basierend auf Schlüssel sortieren?
- 15. Wie bestimmte Spalte von 2d Array
- 16. Sortierung 2D-Vektor-Array Basierend auf einer Säule
- 17. Spalte ein Array sortieren?
- 18. Sum andere Zeile in Spalte basierend auf der zweiten Spalte Wert
- 19. Wie 2d Scatterplot zu ändern, um Farbe basierend auf dritten Array in CSV-Datei anzuzeigen?
- 20. Sortieren nach der zweiten Spalte numerisch und zuerst alphabetisch
- 21. Operation auf 2d Array-Spalten
- 22. Wie ein Wörterbuch sortieren basierend auf einer Liste in Python
- 23. Sortieren SQL Array basierend auf Monate von String-Typ
- 24. Python - beste Möglichkeit, eine Spalte in einem 2D-Array auf einen bestimmten Wert zu setzen
- 25. 2d Array speichern Python
- 26. 2D-Array nach spezifischer Zeile sortieren
- 27. Objekt-Array basierend auf einem anderen Array von Schlüsseln sortieren
- 28. Maske einen numpy Array 2D basierend auf Werten in einer Spalte
- 29. Liste der Wörterbücher basierend auf Schlüsseln sortieren
- 30. Excel Conditional Format basierend auf Werten in 2D-Array
Mit diesem Befehl verwenden können, habe ich gleiches Problem wie vor, die bei der Sortierung wird dupliziert. Wenn die Eingangsdaten: Daten = [1,0 0,70 0,0 0,69 3,0 0,57 0,0 0,68 1,0 0,56 2,0 0,51] Die Sortieranlage Ergebnisse sind: [[0,0' , ‚0,68‘] [ ‚0,0‘, ‚0,69‘ ], ['0.70', '1.0'], ['0.56', '1.0'], ['0.51', '2.0'], ['0.57', '3.0'] Haben Sie eine andere Idee? – Sam
Ich fürchte, ich verstehe das Problem nicht ganz. Was ist dupliziert? Wenn Ihre Eingabe 'Data' eine flache Liste ist, warum würde das Sortieren in einer Liste von Listen resultieren? –