The NumPy nonzero()
method finds the indices of array elements that are not zero.
Example
import numpy as np
originalArray = np.array([1, 0, 0, 4, -5])
# return the indices of elements that are not zero
result = np.nonzero(originalArray)
print(result)
# Output: (array([0, 3, 4]),)
nonzero() Syntax
The syntax of nonzero()
is:
numpy.nonzero(array)
nonzero() Argument
The nonzero()
method takes one argument:
array
- an array whose non-zero indices are to be found
nonzero() Return Value
The nonzero()
method returns a tuple
of arrays; one for each dimension of the input array, containing the indices of the non-zero elements in that dimension.
Example 1: numpy.nonzero() With Arrays
import numpy as np
numberArray = np.array([1, 0, 0, 4, -5])
stringArray = np.array(['Apple', 'Ball', '', 'Dog'])
# return indices of non-zero elements in numberArray
numberResult = np.nonzero(numberArray)
# return indices of non-empty elements in stringArray
stringResult = np.nonzero(stringArray)
print('Indices of non-zero elements in numberArray:', numberResult)
print('Indices of non-empty elements in stringArray:', stringResult)
Output
Indices of non-zero elements in numberArray: (array([0, 3, 4]),) Indices of non-empty elements in stringArray: (array([0, 1, 3]),)
Example 2: numpy.nonzero() With 2-D Arrays
import numpy as np
array = np.array([[1, 0, 3],
[2, 0, 0],
[0, 4, 5]])
# return indices of elements that are not zero
result = np.nonzero(array)
print(result)
Output
(array([0, 0, 1, 2, 2]), array([0, 2, 0, 1, 2]))
Here, the output of the code is a tuple containing two arrays.
The first array [0, 0, 1, 2, 2] represents the row indices of the non-zero elements, and the second array [0, 2, 0, 1, 2] represents the corresponding column indices.
- The first non-zero element is 1, which is located at row index 0 and column index 0.
- The second non-zero element is 3, which is located at row index 0 and column index 2, and so on.
Example 3: numpy.nonzero() With Condition
We can also use nonzero()
to find the indices of elements that satisfy the given condition.
import numpy as np
array = np.array([1, 2, 3, 4, 5, 6])
# return indices of elements that satisfy the condition
# true if the array element is even
result = np.nonzero(array%2==0)
print(result)
Output
(array([1, 3, 5]),)
Note: To group the indices by the element, rather than dimension, we use argwhere().