numpy.select() function – Python
Last Updated :
07 Apr, 2025
Improve
The numpy.select()
function is used to construct an array by selecting elements from a list of choices based on multiple conditions. It is particularly useful when dealing with conditional replacements or transformations in NumPy arrays.
Example:
import numpy as np
arr = np.array([10, 20, 30, 40])
conditions = [arr < 20, arr > 30]
choices = [100, 200]
result = np.select(conditions, choices, default=0)
print(result)
Syntax:
numpy.select(condlist, choicelist, default=0)
Parameters:
condlist
: list of bool ndarrays
A list of boolean NumPy arrays that determine from which array inchoicelist
the output elements are selected. If multiple conditions areTrue
, the first one encountered is used.choicelist
: list of ndarrays
A list of arrays from which the output elements are chosen. It must have the same length ascondlist
.default
: scalar, optional (default=0)
The value inserted in the output array when none of the conditions are met.
Return Value:
ndarray
: An array with elements chosen fromchoicelist
based on the conditions incondlist
.
Code Implementation
1. Basic Usage of numpy.select()
Here:
- If
arr < 3
, the corresponding element is taken fromarr
. - If
arr > 4
, the corresponding element is taken fromarr**3
. - Otherwise, the default value
0
is used.
import numpy as np
arr = np.arange(8)
condlist = [arr < 3, arr > 4]
choicelist = [arr, arr**3]
result = np.select(condlist, choicelist)
print(result)
Output :
[ 0 1 2 0 0 125 216 343]
2. Using a Different Default Value
Here:
- Values where
arr < 4
are taken fromarr
. - Values where
arr > 6
are taken fromarr**2
. - All other values are replaced with
-1
(instead of0
).
arr = np.arange(8)
condlist = [arr < 4, arr > 6]
choicelist = [arr, arr**2]
# Custom default value (e.g., -1)
result = np.select(condlist, choicelist, default=-1)
print(result)
Output:
0 1 2 3 -1 -1 -1 49]
3. Handling Multiple Conditions
Here :
- If
arr
is even (arr % 2 == 0
), it is multiplied by 10. - If
arr
is divisible by 3 (arr % 3 == 0
), it is negated. - If neither condition is met, the default value
100
is used.
arr = np.arange(10)
condlist = [arr % 2 == 0, arr % 3 == 0]
choicelist = [arr * 10, arr * -1]
result = np.select(condlist, choicelist, default=100)
print(result)
Output:
[ 0 100 20 -3 40 100 60 100 80 -9]
Why Use numpy.select()
?
- More flexible than
numpy.where()
when dealing with multiple conditions. - Helps avoid complex nested
if-else
conditions in array transformations. - Efficient and concise for applying different transformations to an array based on conditions.
Comparison with numpy.where()
Feature | numpy.select() | numpy.where() |
---|---|---|
Multiple Conditions | Yes | No (only two conditions: True/False) |
Custom Default Value | Yes | No |
Simplicity | Better for multiple rules | Better for simple if-else |
The numpy.select()
function is a powerful tool for conditional selection and transformation of array elements. It is especially useful when handling multiple conditions efficiently in a structured way. Mastering its usage will help simplify complex array operations in Python.