# Count an element in numpy array

## Here are the different ways we can count the occurrence of an element in a numpy array !

Nivedita Datta
·Jul 3, 2021·

Here are the different ways you can count the occurrence of an element in a numpy array.

### The non-numpy way

Here are the ways we can calculate the occurrence of various elements in a numpy array without using the inbuilt methods

#### Method 1: convert array to python list

``````>>> import numpy as np
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>> lst = list(arr)
>>> lst.count(0)
4
>>> lst.count(2)
7
>>> lst.count(5)
0
``````

#### Method 2: using `collections.counter`

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

#### Method 3: using dictionary comprehension

``````>>> import numpy as np
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>> counts = {int(value): list(arr).count(value) for value in set(arr)}
>>> counts
{0: 4, 1: 1, 2: 7, 3: 3}
``````

### The numpy way

These are the different ways we can find occurrence of any element in a numpy element using the unbuilt methods.

#### Method 1: using `count_nonzero`

``````>>> import numpy as np
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>> np.count_nonzero(arr == 0)
4
>>> np.count_nonzero(arr == 2)
7
>>> np.count_nonzero(arr == 5)
0
``````

#### Method 2: using `sum`

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

#### Method 3: using `unique`

``````>>> import numpy as np
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>>
>>> unique, counts = np.unique(arr, return_counts=True)
>>> dict(zip(unique, counts))
{0: 4, 1: 1, 2: 7, 3: 3}
``````

#### Method 4: using `where`

``````>>> import numpy as np
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>> len(np.where(arr==0.)[0])
4
>>> len(np.where(arr==2.)[0])
7
>>> len(np.where(arr==5.)[0])
0
``````

#### Method 5: using `bincount`

``````>>> import numpy as np
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 0])
>>> np.bincount(arr, minlength=np.size(arr))
array([4, 1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>>
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 100])
>>>
>>> np.bincount(arr, minlength=np.size(arr))
array([3, 1, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])
``````

The `bincount` method works only for integer values and outputs a list of count for each variable in the array. 0th index gives count of element 0, 5th index will give the count of element 5 and so on. In the second example I showed, as I added 100 to the list, the output array size increased to add the count for element 100.

While this might not be a feasible option in case of large integer values, it still is an interesting way to find the count of elements.

### The Pandas way !

``````>>> import numpy as np
>>> import pandas as pd
>>>
>>> arr = np.array([1, 2, 2, 2, 2, 0, 2, 3, 3, 3, 0, 0, 2, 2, 100])
>>> pd.Series(arr).value_counts()
2      7
0      3
3      3
1      1
100    1
dtype: int64
``````

What other ways can we count elements in a numpy array?