Test if numpy array contains only zeros
The other answers posted here will work, but the clearest and most efficient function to use is numpy.any()
:
>>> all_zeros = not np.any(a)
or
>>> all_zeros = not a.any()
- This is preferred over
numpy.all(a==0)
because it uses less RAM. (It does not require the temporary array created by thea==0
term.) Also, it is faster thannumpy.count_nonzero(a)
because it can return immediately when the first nonzero element has been found.- Edit: As @Rachel pointed out in the comments,
np.any()
no longer uses "short-circuit" logic, so you won't see a speed benefit for small arrays.
- Edit: As @Rachel pointed out in the comments,
Check out numpy.count_nonzero.
>>> np.count_nonzero(np.eye(4))
4
>>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]])
5
I'd use np.all here, if you have an array a:
>>> np.all(a==0)