# NumPy where() Function With Examples

Python NumPy where() function is used to return the indices of elements in an input array where the given condition is satisfied. Use this function to select elements from two different sequences based on a condition on a different NumPy array. If we are passing all 3 arguments to numpy.where(). Then all the 3 numpy arrays must be of the same length otherwise it will raise the `Value Error`.

In this article, I will explain Python NumPy `where()` function using its syntax, parameters, and how to use it to check the conditions on an array and get an array based on conditions on another array.

## 1. Quick Examples of Python NumPy where Function

If you are in a hurry, below are some quick examples of how to use Python NumPy where() function.

``````
# Below are the quick examples

# Example 1: Use numpy.where() with 1 Dimensional Arrays
arr1 = np.where(arr > 17)

# Example 2: Get the specified resultant array
arr2 = np.where(arr > 17, 1, 3)

# Example 3: Get some of resultant array as it is
arr2 = np.where(arr > 17, 5, arr)

# Example 4: Use numpy.where() function
arr2 = np.where(arr <17, -1, 100)

# Example 5: ndarray without using np.where()
arr = np.array([[12,14,17,19],[13,16,24,27]])
arr2 = arr < 17

# Example 6: Use numpy.where() to multiple conditions
arr2 = np.where((arr > 14) & (arr < 24), -2, 150)

# Example 7: Use bool value
arr2 = (arr > 14) & (arr < 24)
``````

## 2. Syntax of NumPy where()

Following is the syntax of NumPy where() function.

``````
# Syntax of where()
numpy.where(condition, [x, y, ])
``````

### 2.1 Parameters of the where()

Following are the parameters of the NumPy where()

• `condition` -When True, yield x, otherwise yield y.
• `x,y` – Values from which to choose. x, y, and condition need to be broadcastable to some shape.

### 2.2 Return Value of the where()

• It returns an array if both x and y are specified, the output array contains elements of x where the condition is True and elements of y where the condition is false.
• It returns a tuple of indices if an only condition is given, the indices where the condition is True.

## 3. Usage of NumPy where() Function

Python NumPy where() is used to create a new array from the existing array based on conditions. It returns the indices of the array for which each condition is True.

### 3.1 Use NumPy where() with Single Condition

Using `where()` function we can convert one array to another array based on some condition. Let’s create NumPy array using `numpy.array()` function.

``````
import numpy as np

# Create a numpy array
arr = np.array([[12,14,17,19,24,27,35,38]])

# Use numpy.where() with 1 Dimensional Arrays
arr1 = np.where(arr > 17)
print(arr1)

# Output
# (array([0, 0, 0, 0, 0], dtype=int64), array([3, 4, 5, 6, 7], dtype=int64))
``````

Here, you can observe tuple has been returned. As I mentioned above that when passed only condition into the where() it will return a tuple of indices.

You can use the same conditional expression `(arr > 17)` but specify that the result array should have a value of `1` where the condition `true` and a value of `3` where the condition is `false`. The result is an array with a value of `3 `where `arr` is less than `17` and a value of `1` otherwise.

``````
# Get the specified resultant array
arr2 = np.where(arr > 17, 1, 3)
print(arr2)

# Output
# [[3 3 3 1 1 1 1 1]]
``````

In order to create an array to another array using `np.where(arr > 17,5,arr)` to keep the value in the original array for one of the results. Here, You keep the value `arr` if the condition resolves to false.

``````
# Get some of resultant array as it is
arr2 = np.where(arr > 17, 5, arr)
print(arr2)

# Output
[12 14 17  5  5  5  5  5]]
``````

## 4. Use where() Function With 2- D Array

`numpy.where()` function returns `ndarray` which is `x` if the condition is `True` and `y` if `False`. x, y, and condition need to be broadcastable to the same shape.

``````
import numpy as np

# Create a numpy array
arr = np.array([[12,14,17,19],[13,16,24,27]])

# Use numpy.where() function
arr2 = np.where(arr <17, -1, 100)
print(arr2)

# Output :
# [[ -1  -1 100 100]
# [ -1  -1 100 100]]
``````

Alternatively, we can return a boolean values of `ndarray `can be obtained by a conditional expression including` ndarray `without using `np.where()`.

``````
# ndarray without using np.where()
arr = np.array([[12,14,17,19],[13,16,24,27]])
arr2 = arr < 17
print(arr2)

# Output
# [[ True  True False False]
# [ True  True False False]]
``````

## 5. Use NumPy where() without condition expression

In all the previous examples we passed a condition expression as the first argument, which will be evaluated to a bool array. But we can pass a bool array too instead of that,

`numpy.where()` iterates over the bool array, and for every `True`, it yields the corresponding element array `x`, and for every `False`, it yields the corresponding element from the array `y`. So, it returns an array of items from `x` where the condition is `True` and elements from `y` elsewhere.

``````
import numpy as np

# Use numpy.where() without condition
arr2 = np.where([True, False, True], [12,14,17], [13,16,24])
print(arr2)

# Output
# [12 16 17]
``````

## 6. Use numpy.where() with Multiple Conditions

You can use `numpy.where()` with multiple conditions, where each conditional expression is enclosed in `()` and `&` or `|` is used, the processing is applied to multiple conditions.

``````
# Use numpy.where() to multiple conditions
arr2 = np.where((arr > 14) & (arr < 24), -2, 150)
print(arr2)

# Output
# [[150 150  -2  -2]
#  [150  -2 150 150]]
``````

Get boolean value `ndarray` that can be obtained by multiple conditional expressions including `ndarray `without using `np.where()`.

``````
# Use bool value
arr2 = (arr > 14) & (arr < 24)
print(arr2)

# Output
# [[False False  True  True]
# [False  True False False]]
``````

## 7. Conclusion

In this article, I have explained how to use Python `numpy.where()` function how to get element indices from the array when condition meets. Also learned to use both single arguments as well as multiple arguments with this function.

Happy Learning!!

### References 14 Shares 