Numpy choose() Function
The Numpy choose() function is used to construct a new array by picking elements from multiple input arrays based on the indices provided in a selector array. This function provides a way to combine or select data from several arrays in a flexible manner.
The choose() function works by interpreting the elements of the selector array as indices into the list of input arrays. It creates an output array where each element corresponds to the value from the input array specified by the selector array at the same position.
Syntax
Following is the syntax of the Numpy choose() function −
numpy.choose(a, choices, out=None, mode='raise')
Parameters
Following are the parameters of the Numpy choose() function −
- a: An array of integers (selector array), where each value specifies which input array to select elements from.
- choices: A sequence of arrays from which the output array will be constructed. All arrays must have the same shape as the selector array or be broadcastable to the same shape.
- out (optional): A location where the result is stored. If not provided, a new array is returned.
- mode (optional): A string that controls how out-of-bounds indices in the selector array are handled. Options are −
- raise: Raises an error (default).
- wrap: Wraps around to valid indices.
- clip: Clips to the range of valid indices.
Return Type
This function returns an array containing elements selected from the input arrays based on the selector array.
Example
Following is a basic example to select elements from two arrays using the Numpy choose() function −
import numpy as np
selector = np.array([0, 1, 0, 1])
choices = [np.array([10, 20, 30, 40]), np.array([50, 60, 70, 80])]
result = np.choose(selector, choices)
print("Resulting Array:", result)
Output
Following is the output of the above code −
Resulting Array: [10 60 30 80]
Example: Broadcasting the Selector Array
The selector array can be broadcasted to match the shape of the input arrays. In the following example, a 1D selector array is used with 2D input arrays, and broadcasting ensures proper selection −
import numpy as np
selector = np.array([0, 1])
choices = [np.array([[10, 20], [30, 40]]), np.array([[50, 60], [70, 80]])]
result = np.choose(selector, choices)
print("Resulting Array:\n", result)
Output
Following is the output of the above code −
Resulting Array: [[10 60] [30 80]]
Example: Using the Mode Parameter
The mode parameter in the choose() function controls how out-of-bounds values in the selector array are handled. When set to clip, any out-of-bounds indices are clipped to the range of valid indices. In the following example, an out-of-bounds index is clipped −
import numpy as np
selector = np.array([[0, 1],[ 2, 3]])
choices = [np.array([10, 20]), np.array([30, 40]), np.array([50, 60])]
result = np.choose(selector, choices, mode='clip')
print("Resulting Array:\n", result)
Output
Following is the output of the above code −
Resulting Array: [[10 40] [50 60]]