How to count the occurrence of certain item in an ndarray?
a = numpy.array([0, 3, 0, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 3, 4])unique, counts = numpy.unique(a, return_counts=True)dict(zip(unique, counts))# {0: 7, 1: 4, 2: 1, 3: 2, 4: 1}
Non-numpy way:
Use collections.Counter
;
import collections, numpya = numpy.array([0, 3, 0, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 3, 4])collections.Counter(a)# Counter({0: 7, 1: 4, 3: 2, 2: 1, 4: 1})
What about using numpy.count_nonzero
, something like
>>> import numpy as np>>> y = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])>>> np.count_nonzero(y == 1)1>>> np.count_nonzero(y == 2)7>>> np.count_nonzero(y == 3)3
Personally, I'd go for:(y == 0).sum()
and (y == 1).sum()
E.g.
import numpy as npy = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])num_zeros = (y == 0).sum()num_ones = (y == 1).sum()