Comment compter les occurrences d'un objet dans un tableau unidimensionnel en Python
-
Utilisation de
collections
pour trouver le nombre d’occurrences dans un tableau en Python -
Utilisation de la bibliothèque
NumPy
pour trouver le nombre d’occurrences dans un tableau en Python
L’un des principaux problèmes auxquels un développeur peut être confronté lorsqu’il travaille avec un tableau est le comptage du nombre d’occurrences d’un élément. Imaginez que vous ayez un tableau du nombre d’articles vendus sur un site de commerce électronique sur 10 jours, vous voudriez connaître le nombre de jours où plus de 100 articles sont vendus.
sales = [0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]
La solution la plus simple consiste à compter le nombre de fois que 100 occurrences se produisent dans le tableau.
Utilisation de collections
pour trouver le nombre d’occurrences dans un tableau en Python
Les collections
agissent comme des conteneurs pour stocker des collections de données. Nous pouvons facilement importer le module collections
et utiliser la fonction “Compteur”.
Vérifiez le code ci-dessous:
import collections
sales=[0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]
print(collections.Counter(sales))
La sortie qui en résulte est un dictionnaire. Il indique combien de fois chaque élément du tableau est apparu.
Cependant, si nous voulons imprimer le nombre de fois que 100 se produit dans le tableau “ventes”, nous pouvons le récupérer dans le dictionnaire.
>>>print(collections.Counter(sales)[100])
4
Le module “Collection” fonctionne également avec des nombres décimaux et des chaînes de caractères.
floatarr=[0.7, 10.0, 10.1, .8, .7, .8, .2, .1, 10.0,
10.0, .8, .8, .7, .7, .8]
print(collections.Counter(floatarr))
#Counter({0.8: 5, 0.7: 4, 10.0: 3, 10.1: 1, 0.2: 1, 0.1: 1})
stringarr=["george","mark","george","steve","george"]
print(collections.Counter(stringarr))
#Counter({'george': 3, 'mark': 1, 'steve': 1})
Utilisation de la bibliothèque NumPy
pour trouver le nombre d’occurrences dans un tableau en Python
Cependant, nous pouvons également utiliser NumPy, qui est une bibliothèque définie en Python pour traiter de grands tableaux et qui contient également un grand nombre de fonctions mathématiques.
Il existe plusieurs façons d’utiliser les fonctions définies dans NumPy pour retourner le nombre d’articles dans un tableau.
Utilisation d’une fonction unique
dans NumPy
La fonction unique
avec la fonction “Comptage” retourne un dictionnaire du comptage de chaque article. Elle fonctionne également avec les nombres décimaux et les chaînes de caractères.
import collections, numpy
aUnique = numpy.array([0, 100, 100, 80, 70, 80, 20, 10, 100,
100, 80, 70, 10, 30, 40])
unique, counts = numpy.unique(aUnique, return_counts=True)
print(dict(zip(unique, counts)))
Utilisation de la fonction count_nonzero
dans NumPy
L’utilisation du “compte_non-zéro” retourne le nombre d’articles que nous recherchons. Il offre une interface facile à lire et moins de lignes de code.
>>>aCountZero = numpy.array([0, 100.1, 100.1, 80, 70, 80, 20, 10,
100, 100, 80, 70, 10, 30, 40,"abc"])
>>>print(numpy.count_nonzero(aCountZero == "abc"))
1
count_nonzero
fonctionne aussi avec des nombres décimaux et des chaînes de caractères.
>>>aCountZero = numpy.array([0, 100.1, 100.1, 80, 70, 80, 20, 10,
100, 100, 80, 70, 10, 30, 40])
>>>print(numpy.count_nonzero(aCountZero == 100.1))
1
Utilisation de la fonction bincount
dans NumPy - seulement pour les tableaux avec des entiers
Cependant, si vous avez un tableau qui ne contient que des entiers, vous pouvez utiliser la fonction bincount
de NumPy. La meilleure partie est qu’elle retourne les résultats sous forme de tableau.
>>>abit = numpy.array([0, 6, 0, 10, 0, 1, 1, 0, 10, 9, 0, 1])
>>>print(numpy.bincount(abit))
[5 3 0 0 0 0 1 0 0 1 2]
Pour les nombres dans le tableau, le résultat affiche le nombre d’éléments en ordre croissant. Par exemple, 0 dans le tableau abit
se produit 5 fois et 10 se produit 2 fois comme indiqué par le premier et le dernier élément du tableau.