Contare le occorrenze di un elemento in un array unidimensionale in Python
-
Usa
collections
per trovare il numero di occorrenze in un array in Python - Usa la libreria NumPy per trovare il numero di occorrenze in un array in Python
Mentre si lavora con un array, uno dei problemi principali che uno sviluppatore può affrontare è il conteggio del numero di occorrenze di un elemento. Immagina di avere una serie del numero di articoli venduti in un sito di e-commerce in 10 giorni, vorresti conoscere il numero di giorni in cui vengono venduti più di 100 articoli.
sales = [0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]
Il modo più semplice per risolvere è ottenere un conteggio del numero di volte in cui 100 si verifica nell’array.
Usa collections
per trovare il numero di occorrenze in un array in Python
Le collections
agiscono come contenitori per memorizzare raccolte di dati. Possiamo facilmente importare il modulo collections
e usare la funzione Counter
.
Controlla il codice qui sotto:
import collections
sales=[0, 100, 100, 80, 70, 80, 20, 10, 100, 100, 80, 70, 10, 30, 40]
print(collections.Counter(sales))
L’output risultante è un dizionario Python. Elenca quante volte si è verificato ogni elemento dell’array.
Tuttavia, se vogliamo stampare il numero di volte in cui 100 si verifica nell’array sales
, possiamo recuperarlo dal dizionario.
>>>print(collections.Counter(sales)[100])
4
Il modulo Collection
funziona anche con numeri e stringhe decimali.
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})
Usa la libreria NumPy per trovare il numero di occorrenze in un array in Python
Tuttavia, possiamo anche usare NumPy, che è una libreria definita in Python per gestire array di grandi dimensioni e contiene anche un gran numero di funzioni matematiche.
Esistono diversi modi per utilizzare le funzioni definite in NumPy per restituire i conteggi degli elementi in un array.
Usa la funzione unique
in NumPy
La funzione unique
insieme a Count, restituisce un dizionario del conteggio di ogni elemento. Funziona anche con numeri decimali e stringhe.
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)))
Usa la funzione count_nonzero
in NumPy
L’utilizzo del count_nonzero
restituisce il conteggio dell’articolo che stiamo cercando. Fornisce un’interfaccia di facile lettura e meno righe di codice.
>>>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
funziona anche con numeri e stringhe decimali.
>>>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
Usa la funzione bincount
in NumPy - Solo per array con numeri interi
Tuttavia, se hai un array che ha solo numeri interi, puoi usare la funzione bincount
di NumPy. La parte migliore è che restituisce i risultati come un array.
>>>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]
Per i numeri nella matrice, il risultato mostra il conteggio degli elementi in ordine crescente. Ad esempio, 0 nell’array abit
compare 5 volte e 10 2 volte come indicato dal primo e dall’ultimo elemento dell’array.