Python Numpy.where() Function
-
Syntax of
numpy.where() -
Example Codes:
numpy.where()Without[X, Y] -
Example Codes:
numpy.where()With 1-D Array -
Example Codes:
numpy.where()With 2-D Array -
Example Codes:
numpy.where()With Multiple Conditions
Numpy.where() function generates the indexes of the array that meet the input condition, if x, y are not given; or the array elements from either x or y based on the given condition.
Syntax of numpy.where()
numpy.where(condition, [x, y])
Parameters
condition |
array_like, True or False If condition is True, output contains element from x, otherwise, output contains element from y |
x,y |
array from which the return generates Either pass both (x, y) or none. |
Return
It returns an array. If condition is True, the result contains elements of x, and if condition is False, the result contains elements of y.
It returns indexes of the array is x, y are not given.
Example Codes: numpy.where() Without [X, Y]
import numpy as np
m = np.array([1, 2, 3, 4, 5])
n = np.where(m > 3)
print(n)
Output:
(array([3, 4], dtype=int64),)
It returns the indexes of m, where its element is larger than 3 - a > 3.
If you need the element rather than the indexes.
Example Codes: numpy.where() With 1-D Array
import numpy as np
m = np.where([True, False, True], [1,2,3], [4, 5, 6])
print(m)
Output:
[1 5 3]
When the condition is a 1-D array, Numpy.where() function iterates over the condition array, and picks the element from x if the condition element is True, or the element from y if the condition element is False.
Example Codes: numpy.where() With 2-D Array
import numpy as np
x = np.array([[10, 20, 30], [3, 50, 5]])
y = np.array([[70, 80, 90], [100, 110, 120]])
condition = np.where(x > 20, x, y)
print("Input array :")
print(x)
print(y)
print("Output array with condition applied:")
print(condition)
Output:
Input array :
[[10 20 30]
[ 3 50 5]]
[[ 70 80 90]
[100 110 120]]
Output array with condition applied:
[[ 70 80 30]
[100 50 120]]
It applies the condition of x>20 to all the elements of x, if it is True, then the element of x yields as output, and if it is False, it yields the element of y.
We make a simplified example to show how it works.
import numpy as np
m = np.where(
[[True, False, True], [False, True, False]],
[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]],
)
print(m)
Output:
[[ 1 8 3]
[10 5 12]]
Example Codes: numpy.where() With Multiple Conditions
We could also apply two or multiple conditions in the numpy.where() function.
import numpy as np
m = np.array([1, 2, 3, 4, 5])
n = np.where((m > 1) & (m < 5), m, 0)
print(n)
Output:
[0 2 3 4 0]
It applies the multiple conditions, m > 1 and m < 5, and returns the element if the element satisfies both conditions.
The logic between the multiple conditions is not limited to AND (&), but OR (|) is also accepted.
import numpy as np
m = np.array([1, 2, 3, 4, 5])
n = np.where((m < 2) | (m > 4), m, 0)
print(n)
Output:
[1 0 0 0 5]