numpy.where() in Python
The NumPy module provides a function numpy.where() for selecting elements based on a condition. It returns elements chosen from a or b depending on the condition.
For example, if all arguments -> condition, a & b are passed in numpy.where() then it will return elements selected from a & b depending on values in bool array yielded by the condition.
If only the condition is provided, this function is a shorthand to the function np.asarray (condition).nonzero(). Although nonzero should be preferred directly, as it behaves correctly for subclasses.
Syntax:
numpy.where(condition[, x, y])
Parameters:
These are the following parameters in numpy.where() function:
condition: array_like, bool
If this parameter set to True, yield x otherwise yield y.
x, y: array_like:
This parameter defines the values from which to choose. The x, y, and condition need to be broadcastable to some shape.
Returns:
This function returns the array with elements from x where the condition is True and elements from y elsewhere.
Example 1: np.where()
import numpy as np
a=np.arange(12)
b=np.where(a<6,a,5*a)
In the above code
We have imported numpy with alias name np.
We have created an array 'a' using np.arange() function.
We have declared the variable 'b' and assigned the returned value of np.where() function.
We have passed the array 'a' in the function.
Lastly, we tried to print the value of b.
In the output, the values ranging from 0 to 5 remain the same as per the condition, and the other values have been multiplied with 5.
Output:
array([ 0, 1, 2, 3, 4, 5, 30, 35, 40, 45, 50, 55])
Example 2: For multidimensional array
import numpy as np
a=np.arange(12)
b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]])
Output:
array([[1, 8],
[3, 4]])
Example 3: Broadcasting x, y, and condition
import numpy as np
x, y = np.ogrid[:3, :4]
a=np.where(x > y, x, 10 + y)
Output:
array([[10, 11, 12, 13],
[ 1, 11, 12, 13],
[ 2, 2, 12, 13]])
In the above code
We have imported numpy with alias name np.
We have created an array 'a' using np.arange() function.
We declared the variable 'b' and assigned the returned value of np.where() function.
We have passed a multidimensional array of boolean as a condition and x and y as an integer arrays.
Lastly, we tried to print the value of b.
In the output, the x value has been compared to y value if it satisfied the condition, then it will be printed x value otherwise, it will print y value, which has passed as an argument in the where() function.
Example 4: Broadcasting specific value
x=np.array([[0,1,2],[0,2,5],[0,4,8]])
y=np.where(x<4,x,-2)
Output:
array([[ 0, 1, 2],
[ 0, 2, -2],
[ 0, -2, -2]])
Next Topic
numpy.argsort()