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
# 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