Heim >Backend-Entwicklung >Python-Tutorial >Kann NumPy Daten effizient basierend auf den eindeutigen Werten einer Spalte gruppieren?

Kann NumPy Daten effizient basierend auf den eindeutigen Werten einer Spalte gruppieren?

DDD
DDDOriginal
2024-12-05 09:32:10757Durchsuche

Can NumPy Group Data Efficiently Based on a Column's Unique Values?

Kann NumPy Daten nach einer bestimmten Spalte gruppieren?

Einführung:

Das Gruppieren von Daten ist ein entscheidender Vorgang in vielen Datenanalyseszenarien. NumPy, eine leistungsstarke numerische Bibliothek in Python, bietet verschiedene Funktionen zum Bearbeiten von Arrays, es fehlt jedoch eine spezielle Gruppierungsfunktion. Dieser Artikel zeigt, wie man in NumPy eine Gruppierung ohne die explizite Verwendung einer dedizierten Funktion erreicht.

Frage:

Gibt es in NumPy eine Funktion, um ein Array nach seiner Gruppierung zu gruppieren? erste Spalte, wie im bereitgestellten Array gezeigt?

array([[ 1, 275],
       [ 1, 441],
       [ 1, 494],
       [ 1, 593],
       [ 2, 679],
       [ 2, 533],
       [ 2, 686],
       [ 3, 559],
       [ 3, 219],
       [ 3, 455],
       [ 4, 605],
       [ 4, 468],
       [ 4, 692],
       [ 4, 613]])

Erwartet Ausgabe:

array([[[275, 441, 494, 593]],
       [[679, 533, 686]],
       [[559, 219, 455]],
       [[605, 468, 692, 613]]], dtype=object)

Antwort:

Obwohl NumPy nicht explizit eine „Gruppieren nach“-Funktion bereitstellt, bietet es einen alternativen Ansatz, der von Eelco Hoogendoorns inspiriert ist Bibliothek. Dieser Ansatz basiert auf der Annahme, dass die erste Spalte des Arrays immer größer wird. Wenn dies nicht der Fall ist, muss das Array nach der ersten Spalte sortiert werden mit:

a = a[a[:, 0].argsort()]

Unter der Annahme steigender Werte der ersten Spalte führt der folgende Code die Gruppierungsoperation aus:

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])

Dieser Code gruppiert die Array-Elemente effektiv in Unterarrays, basierend auf den eindeutigen Werten in der ersten Spalte. Jedes Subarray stellt eine Gruppe dar, die die zweiten Spaltenwerte für alle Elemente mit demselben ersten Spaltenwert enthält.

Zusätzliche Überlegungen:

  • Die Komplexität dieser Methode beträgt O (n log(n)) aufgrund der Sortieroperation.
  • Die Ergebnislisten sind NumPy-Arrays, sodass für nachfolgende Konvertierungsoperationen nicht erforderlich sind NumPy-Operationen.
  • Leistungsvergleich: Diese Methode hat sich empirisch als schneller erwiesen als andere Gruppierungsansätze, einschließlich Pandas und Defaultdicts, für kleinere Datensätze.

Daher bietet NumPy eine flexible und effiziente Möglichkeit, Daten durch die Verwendung von Array-Manipulations- und Sortierfunktionen zu gruppieren, auch ohne eine spezielle Gruppierungsfunktion.

Das obige ist der detaillierte Inhalt vonKann NumPy Daten effizient basierend auf den eindeutigen Werten einer Spalte gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn