There are some cases where you want to limit the elements of an array to a specific range of maximum and minimum values (for e.g: limiting all the values in the array to be between 2-4). To accomplish this, various methods can be chosen, which are listed down below:

#### 1. Using "boolean indexing":

Boolean indexing is a method of selecting elements from an array or a data structure by evaluating a Boolean condition on each element and returning only the elements that satisfy the condition. To demonstrate the function, the following code:

- Utilizes the NumPy library to generate an array “arr” containing five values.
- The code proceeds to establish a lower limit of 2 and an upper limit of 4. To accomplish this, the code duplicates the original array and uses NumPy indexing to apply the constraints to each element of the duplicated array.
- Any values below the lower limit are adjusted to the lower limit while any values above the upper limit are adjusted to the upper limit. Finally, the code prints the updated array to the console.

In the given code, boolean indexing is used to apply lower and upper limits to every element in the NumPy array ‘arr’ using the conditions created with the `lower_limit`

and `upper_limit`

variables. In this method, clipping an array can be efficient for data manipulation but creating a new copy of the array may not be suitable for large datasets.

#### 2. Using "np.where()" function:

The `np.where()`

function allows for the application of a condition to the elements of an array, and the subsequent assignment of specific values to those elements that meet the condition. The function’s format is as follows:

`np.where(condition, value of limit to be applied [if the condition is true], return an array)`

To demonstrate the function, the following code:

- Utilizes the NumPy library to generate an array “arr” containing five values.
- Next, a lower limit of 2 and an upper limit of 4 is established.
- A duplicate of the original array is then created, and the
`np.where()`

function is applied to every element of the copied array. - If an element falls below the lower limit, it is adjusted to the lower limit, and if it exceeds the upper limit, it is adjusted to the upper limit. Finally, the modified array is printed to the console.

Using NumPy for element-wise operations on arrays with separate conditions applied sequentially can be efficient but may not be as intuitive as using a single condition.