Python Language Conteggio delle occorrenze nell'array numpy


Esempio

Per contare le occorrenze di un valore in una matrice numpy. Questo funzionerà:

>>> import numpy as np
>>> a=np.array([0,3,4,3,5,4,7])
>>> print np.sum(a==3)
2

La logica è che l'istruzione booleana produce una matrice in cui tutte le occorrenze dei valori richiesti sono 1 e tutte le altre sono zero. Quindi sommando questi dà il numero di occorrenze. Questo funziona per array di qualsiasi forma o dtype.

Ci sono due metodi che uso per contare le occorrenze di tutti i valori unici in numpy. Unico e bincount. Unico appiattisce automaticamente gli array multidimensionali, mentre bincount funziona solo con gli array 1d contenenti solo numeri interi positivi.

>>> unique,counts=np.unique(a,return_counts=True)
>>> print unique,counts # counts[i] is equal to occurrences of unique[i] in a
[0 3 4 5 7] [1 2 2 1 1]
>>> bin_count=np.bincount(a)
>>> print bin_count # bin_count[i] is equal to occurrences of i in a
[1 0 0 2 2 1 0 1] 

Se i tuoi dati sono array numpy, in genere è molto più veloce usare metodi numpy per convertire i tuoi dati in metodi generici.