How to count the number of true elements in a NumPy bool array How to count the number of true elements in a NumPy bool array python python

How to count the number of true elements in a NumPy bool array


You have multiple options. Two options are the following.

boolarr.sum()numpy.count_nonzero(boolarr)

Here's an example:

>>> import numpy as np>>> boolarr = np.array([[0, 0, 1], [1, 0, 1], [1, 0, 1]], dtype=np.bool)>>> boolarrarray([[False, False,  True],       [ True, False,  True],       [ True, False,  True]], dtype=bool)>>> boolarr.sum()5

Of course, that is a bool-specific answer. More generally, you can use numpy.count_nonzero.

>>> np.count_nonzero(boolarr)5


That question solved a quite similar question for me and I thought I should share :

In raw python you can use sum() to count True values in a list :

>>> sum([True,True,True,False,False])3

But this won't work :

>>> sum([[False, False, True], [True, False, True]])TypeError...


In terms of comparing two numpy arrays and counting the number of matches (e.g. correct class prediction in machine learning), I found the below example for two dimensions useful:

import numpy as npresult = np.random.randint(3,size=(5,2)) # 5x2 random integer arraytarget = np.random.randint(3,size=(5,2)) # 5x2 random integer arrayres = np.equal(result,target)print resultprint targetprint np.sum(res[:,0])print np.sum(res[:,1])

which can be extended to D dimensions.

The results are:

Prediction:

[[1 2] [2 0] [2 0] [1 2] [1 2]]

Target:

[[0 1] [1 0] [2 0] [0 0] [2 1]]

Count of correct prediction for D=1: 1

Count of correct prediction for D=2: 2