Maison  >  Article  >  développement back-end  >  Comment puis-je compter efficacement la fréquence des valeurs uniques dans un tableau NumPy ?

Comment puis-je compter efficacement la fréquence des valeurs uniques dans un tableau NumPy ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 07:03:30991parcourir

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

Obtention des décomptes de fréquence pour les valeurs uniques dans un tableau NumPy

Pour déterminer efficacement la fréquence de chaque valeur unique dans un tableau NumPy, envisagez d'utiliser La fonction unique de NumPy en conjonction avec 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>

Cette approche produit un tuple contenant deux tableaux : unique, qui contient les valeurs uniques présentes dans le tableau d'origine, et counts, qui indique les fréquences respectives de occurrence pour chaque valeur unique.

Par exemple, l'exécution du code ci-dessus avec le tableau d'entrée donné renvoie :

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

indiquant que la valeur 1 apparaît 5 fois, 2 apparaît 3 fois, 5 apparaît une fois et 25 apparaît une fois.

L'utilisation de unique(return_counts=True) offre un avantage substantiel en termes de performances par rapport à la fonction scipy.stats.itemfreq de SciPy pour les grands ensembles de données, comme le démontre l'extrait de code ci-dessous :

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn