NumPy has the efficient function/method nonzero()
to identify the indices of non-zero elements in an ndarray
object. What is the most efficient way to obtain the indices of the elements that do have a value of zero?
Advertisement
Answer
numpy.where() is my favorite.
>>> x = numpy.array([1,0,2,0,3,0,4,5,6,7,8]) >>> numpy.where(x == 0)[0] array([1, 3, 5])
The method where
returns a tuple of ndarrays, each corresponding to a different dimension of the input. Since the input is one-dimensional, the [0]
unboxes the tuple’s only element.