# Invert elements with specific range in-place

Inverting elements with specific range in-place using NumPy can be a useful operation in various data processing and analysis tasks. The ability to invert values within a specific range in-place can simplify complex operations, such as data normalization or feature scaling. Additionally, this operation can be useful for image processing tasks where pixel intensities need to be adjusted. Inverting values in-place can also lead to more efficient memory usage and speed up the computation of certain algorithms. In this thread, we will discuss some techniques that help to invert elements in-place.

#### 1. By "Indexing" and "broadcasting":

`Indexing` in NumPy is the process of accessing and manipulating specific elements or subsets of an array.

NumPy allows performing operations on arrays with different shapes or dimensions through a process called `broadcasting`. This process makes arrays compatible by automatically adding dimensions or replicating elements as needed.

For example, we can use `Indexing` to select the elements within the specific range (e.g. 3 to 5 using slice notation 3:5 ). The selected elements are then inverted in-place.

The code creates a 1D NumPy array with `9` elements. It then inverts the values of the elements between the indices `2` and `5` by multiplying them by `-1`, and replaces the original values with these inverted values in the original array. The result is printed to the console.

#### 2. Using "logical_and() function:

The `logical_and()` function in NumPy is a logical operation that takes two Boolean arrays as input and returns an array of the same shape, where each element is the result of applying the AND operator to the corresponding elements of the input arrays. This function is useful in filtering and comparing operations, where multiple conditions need to be satisfied at the same time.

Let’s see the example given below to gain better understanding:

The above code creates a one-dimensional array of integers ranging from 1 to 10 using NumPy’s `array()` function. The `logical_and()` function is then used to invert all the elements within the range of 3 to 5 using indexing and multiplication. Finally, the modified array is printed to the console.

#### 3. By "where()" function:

You can also use `logical_and()` creates a boolean mask that is True where values are in specific range and then use `where()` function to select the corresponding elements and multiply them by `-1`, and leave remaining values as they are.
The `where()` function in NumPy is used to return an array of indices where a specified condition is true. It takes three arguments, condition, input array and, value that will be used for elements where the condition is False,

Let’s see the example given below to gain better understanding:

The code creates a 1D numpy array with values 1 to 10, modifies it using `np.where` function to replace values between 3 and 5 with their negative values, and then prints the modified array.