The NumPy `where()`

function is used to get the indices of an array that matches a certain condition.

For example, suppose you want to get the indices of all elements greater than 10. Here’s how you do it:

```
import numpy as np
arr = np.array([5, 10, 15, 20, 25, 30])
indices = np.where(arr >10)
print(indices)
```

**Output:**

```
(array([2, 3, 4, 5]),)
```

You can add the `indices`

to the original array to create a new array that fulfills the condition:

```
import numpy as np
arr = np.array([5, 10, 15, 20, 25, 30])
indices = np.where(arr >10)
new_arr = arr[indices]
print(new_arr)
```

**Output:**

```
[15 20 25 30]
```

Now that you’ve learned how to create an array using the `where()`

function, let’s see how you can filter an array with multiple conditions next.

## Using where() with multiple conditions

The `where()`

function can also be used to filter an array with multiple conditions.

To use `where()`

to filter an array with multiple conditions, you can use the and (`&`

) or or (`|`

) operator. You need to put each condition separately inside parentheses.

For example, suppose you want to filter the array to get elements that are greater than 5 but less than 20:

```
import numpy as np
arr = np.array([5, 10, 15, 20, 25, 30])
indices = np.where((arr > 5) & (arr < 20))
new_arr = arr[indices]
print(new_arr)
```

**Output:**

```
[10 15]
```

As you can see, the `where()`

function effectively filters the `arr`

variable with two conditions.

Next, let’s test an or condition. Suppose you want to add all elements greater than 20 or 5:

```
import numpy as np
arr = np.array([5, 10, 15, 20, 25, 30])
indices = np.where((arr > 20) | (arr == 5))
new_arr = arr[indices]
print(new_arr)
```

**Output:**

```
[ 5 25 30]
```

Here, only elements greater than 20 or exactly 5 will be added to the new array.

## Using np.logical_and() and np.logical_or()

As an alternative to the and/or operator, you can also use the `np.logical_and()`

or `np.logical_or()`

function.

You need to call the function inside the `np.where()`

function. Here’s an example of calling the `logical_and()`

function:

```
import numpy as np
arr = np.array([5, 10, 15, 20, 25, 30])
indices = np.where(np.logical_and(arr > 5, arr < 20))
new_arr = arr[indices]
print(new_arr) # [10 15]
```

When you have multiple AND conditions, you need to place the filter conditions as arguments for the `np.logical_and()`

function.

Here’s an alternative when using the `np.logical_or()`

function:

```
import numpy as np
arr = np.array([5, 10, 15, 20, 25, 30])
indices = np.where(np.logical_or(arr > 20, arr == 5))
new_arr = arr[indices]
print(new_arr) # [ 5 25 30]
```

## Conclusion

Now you’ve learned how to use the `np.where()`

function with multiple conditions. You can use the and/or operator, or you can use the `np.logical_and()`

or `np.logical_or()`

function.

I hope this tutorial is helpful. Happy coding! 👍