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 arrayx
- value to take if thecondition
isTrue
y
- value to take if thecondition
isFalse
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 performOR
operation on multiple conditions - the
&
operator to performAND
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]),)