Wie kann ich NumPy-Arrays effizient gruppieren?

Barbara Streisand
Freigeben: 2024-11-24 22:40:11
Original
976 Leute haben es durchsucht

How Can I Efficiently Group NumPy Arrays?

Effiziente Array-Gruppierung mit NumPy

NumPy bietet zwar möglicherweise keine sofort einsatzbereite Funktion, die speziell für die Gruppierung von Arrays entwickelt wurde sind vielseitige Techniken, die effektiv ähnliche Ergebnisse erzielen können.

Inspiriert von Eelco's Bibliothek

Ein Ansatz ist von der Bibliothek von Eelco Hoogendoorn inspiriert und vereinfacht sie durch Ausnutzung der Annahme, dass die erste Spalte des Eingabearrays monoton ansteigt. Wenn nicht, kann es zuerst mit a = a[a[:, 0].argsort()] sortiert werden.

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

Uniquely Identifying Groups

This Das Snippet nutzt np.unique(), um eindeutige Werte in der ersten Spalte zu identifizieren und deren Indizes zurückzugeben. Diese Indizes werden verwendet, um die zweite Spalte in separate Unterarrays aufzuteilen, die jede Gruppe darstellen.

Zeitkomplexität und Leistung

Diese Methode weist eine O(n)-Komplexität auf und ist daher hoch effizient. Empirische Timeit-Messungen an Arrays mit unterschiedlichen Gruppengrößen bestätigen seine Leistungsvorteile gegenüber anderen Ansätzen wie Pandas, Numpy-Indexed und Defaultdict.

Alternative Lösungen

Über den vorgestellten Ansatz hinaus , NumPy-basierte Techniken wie numpy_groupies können auch für die Gruppierung untersucht werden Operationen.

Zusätzliche Überlegungen

Wenn die erste Spalte des Eingabearrays nicht sortiert ist, wird empfohlen, sie vor der Gruppierung zu sortieren, um genaue Ergebnisse sicherzustellen. Beachten Sie, dass bestimmte Sortieralgorithmen wie argsort eine zeitliche Komplexität von O(n log(n)) haben.

Das obige ist der detaillierte Inhalt vonWie kann ich NumPy-Arrays effizient gruppieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage