Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Häufigkeit eindeutiger Werte in einem NumPy-Array effizient zählen?

Wie kann ich die Häufigkeit eindeutiger Werte in einem NumPy-Array effizient zählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 07:03:30991Durchsuche

How can I efficiently count the frequency of unique values in a NumPy array?

Erhalten von Häufigkeitszahlen für eindeutige Werte in einem NumPy-Array

Um die Häufigkeit jedes einzelnen Werts innerhalb eines NumPy-Arrays effizient zu bestimmen, sollten Sie die Verwendung in Betracht ziehen NumPys einzigartige Funktion in Verbindung mit return_counts=True.

<code class="python">import numpy as np

x = np.array([1,1,1,2,2,2,5,25,1,1])
unique, counts = np.unique(x, return_counts=True)</code>

Dieser Ansatz ergibt ein Tupel mit zwei Arrays: „unique“, das die im ursprünglichen Array vorhandenen eindeutigen Werte enthält, und „counts“, das die jeweiligen Häufigkeiten von angibt Vorkommen für jeden eindeutigen Wert.

Zum Beispiel gibt die Ausführung des obigen Codes mit dem angegebenen Eingabearray Folgendes zurück:

[(1, 5), (2, 3), (5, 1), (25, 1)]

was anzeigt, dass der Wert 1 fünfmal vorkommt, 2 dreimal vorkommt, 5 erscheint einmal und 25 erscheint einmal.

Die Verwendung von unique(return_counts=True) bietet einen erheblichen Leistungsvorteil gegenüber der scipy.stats.itemfreq-Funktion von SciPy für große Datensätze, wie im folgenden Codeausschnitt gezeigt:

<code class="python">In [4]: x = np.random.random_integers(0,100,1e6)

In [5]: %timeit unique, counts = np.unique(x, return_counts=True)
10 loops, best of 3: 31.5 ms per loop

In [6]: %timeit scipy.stats.itemfreq(x)
10 loops, best of 3: 170 ms per loop</code>

Das obige ist der detaillierte Inhalt vonWie kann ich die Häufigkeit eindeutiger Werte in einem NumPy-Array effizient zählen?. 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