NumPy where()

The numpy.where() method returns a new array based on a condition applied to each element of an array.

Example

import numpy as np

originalArray = np.array([1, -2, -3, 4, 5])

condition = originalArray < 0

# For each element of originalArray, # if condition is True, use 0 as element in the resultant array # if condition is False, use the corresponding element in the resultant array result = np.where(condition, 0, originalArray )
print(result) # Output : [1 0 0 4 5]

where() Syntax

The syntax of where() is:

numpy.where(condition, x, y)

where() Arguments

The where() method takes three arguments:

  • condition - a boolean or an array
  • x - value to take if the condition is True
  • y - value to take if the condition is False

Note: We can also pass a single argument to np.where(). To learn about it, visit np.where() with a single argument section below.


where() Return Value

The where() method returns a new NumPy array.


Example 1: numpy.where() With Two Arrays

import numpy as np

x = np.array([1, 2, 3, 4])
y = np.array([10, 20, 30, 40])

test_condition = x < 3 

# if test_condition is True, select element of x # if test_condition is False, select element of y result = np.where(test_condition, x, y)
print(result)

Output

[1 2 30 40]

Example 2: numpy.where() with Operation

We can also use numpy.where() to perform operations on array elements.

import numpy as np

x = np.array([-1, 2, -3, 4])

# test condition
test_condition = x > 0

# if test_condition is True, select element of x # if test_condition is False, select x * -1 result = np.where(test_condition, x, x * -1)
print(result)

Output

[1 2 3 4]

Example 3: where() with Array Condition

We can use array_like objects (such as lists, arrays etc.) as a condition in the where() method.

import numpy as np

x = np.array([[1, 2], [3, 4]])
y = np.array([[-1, -2], [-3, -4]])

# returns element of x when True # returns element of y when False result = np.where([[True, True], [False, False]], x, y)
print(result)
# returns element of x when True # returns element of y when False result = np.where([[True, False], [False, True]], x, y)
print(result)

Output

[[1 2]
 [-3 -4]]

[[1 -2]
 [-3 4]]

Example 4: where() with Multiple Conditions

The test condition in a where() method may have multiple conditions.

We use

  • the | operator to perform OR operation on multiple conditions
  • the & operator to perform AND operation on multiple conditions
import numpy as np

x = np.array([1, 2, 3, 4, 5, 6, 7])

# if element is less than 2 or greater than 6, test condition is True test_condition1 = (x < 2) | (x > 6)
# select element of x if test condition is True # select 0 if test condition is False result1 = np.where(test_condition1, x, 0) print(result1)
# if element is greater than 2 and less than 6, test condition is True test_condition2 = (x > 2) & (x < 6)
# select element of x if test condition is True # select 0 if test condition is False result2 = np.where(test_condition2, x, 0) print(result2)

Output

[1 0 0 0 0 0 7]
[0 0 3 4 5 0 0]

Example 5: where() with Only One Argument

If we pass a single argument (test condition) to numpy.where(), it tells us where in a given array the given condition is met by returning the indices.

import numpy as np

originalArray = np.array([0, 10, 20, 30, 40, 50, 60, 70])

# returns index of elements for which the test condition is True result = np.where(originalArray > 30)
print(result)

Output

(array([4, 5, 6, 7]),)