Search code examples
pythonnumpymultidimensional-arraycount

How do I count the occurrence of a certain item in an ndarray?


How do I count the number of 0s and 1s in the following array?

y = np.array([0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1])

y.count(0) gives:

numpy.ndarray object has no attribute count


Solution

  • Using numpy.unique:

    import numpy
    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 method using collections.Counter;

    import collections, numpy
    a = numpy.array([0, 3, 0, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 3, 4])
    counter = collections.Counter(a)
    
    >>> counter
    Counter({0: 7, 1: 4, 3: 2, 2: 1, 4: 1})