NumPy nonzero()

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().

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community