Indexing and Slicing Numpy Arrays
Published: 2022-12-27 15:09:58

---
title: Indexing and Slicing Numpy Arrays
published: true
date: 2021-05-21 15:40:22 UTC
tags: 
canonical_url: https://sree-gaya3.hashnode.dev/numpy-part2
---

Hello Guys👋

In the previous article, we have learned different methods of creating Numpy Arrays. In this article, we will see how to perform indexing and slicing on Numpy Arrays.

Let's get started with this article👍.

- [Indexing and Slicing in 1D Arrays](#indexing-and-slicing-in-1d-arrays)
  - [Indexing](#indexing)
  - [Slicing](#slicing)
- [Indexing and Slicing in 2D Arrays](#indexing-and-slicing-in-2d-arrays)
  - [Indexing](#indexing1)
  - [Slicing](#slicing1)
- [Conclusion](#conclusion)

## Indexing & Slicing in 1D Arrays

Both indexing and slicing are similar to Python Lists.

### Indexing :

- **Zero-based Indexing** - index of 1st element is 0
- **Supports Negative Indexing** - Index of last element is -1 

To get more clarity, Let's see this in an example now.

```
numbers_array = np.array([1, 4, 7, 0, 55, 79, 3])
first_number = numbers_array[0]
third_number = numbers_array[2]
last_number = numbers_array[-1]
third_from_last_number = numbers_array[-3]

print("Array : ", numbers_array)
print("first_number : ", first_number)
print("third_number : ", third_number )
print("last_number : ", last_number )
print("third_from_last_number : ", third_from_last_number )

```

By now you may have guessed what it prints👏. Let's see.

```
Array : [1 4 7 0 55 79 3]
first_number : 1
third_number : 7
last_number : 3
third_from_last_number : 55

```

### Slicing :

- Slice with the `[start:stop]` syntax outputs elements in the interval **[start, stop)**
- Slice with the `[start:stop:step]` syntax outputs elements in the interval **[start, stop)** with a step size of **step**

Let's see various types of slicing

```
numbers_array = np.array([1, 4, 7, 0, 55, 79, 3, 45, 28])

```

- **General Method** :

- **Using Negative indices** :

- **Omitting Start and Stop Indices** :

### Modifying Slices :

In NumPy, slices can be assigned

- a constant or
- an array of the right shape.

For example

- **Assigning constant to a Slice** : 
  - `numbers_array[1:4] = 5` This changes all the values from index 1 to 3 to 5.
- **Assigning an array of right shape to a Slice**
  - `numbers_array[2:6] = np.array([1, 2, 3, 4])` This replaces the slice with the new array assigned.

**Important Note** : In NumPy slicing returns a view of the original array, instead of creating a new array. (Assignments also return the view only)

- This makes slicing numpy arrays very fast.
- This also means modifying a slice, modifies the underlying array as well.

**To create a new array** from the given Numpy array, we have to use `numbers_array.copy()` method. This creates a duplicate array and the changes made to this will not modify the original array.

## Indexing & Slicing in 2D Arrays

### Indexing :

Again same as 1D arrays,

- **Zero-based Indexing** - indexing starts with 0

```
array_2d = np.array(['a', 'b', 'c', 'd'],
                    ['e', 'f', 'g', 'h'],
                    ['i', 'j', 'k', 'l']])

```

Let's how we can access rows, columns, and elements.

- `array_2d[i]` gives the `i+1 th row`, like array\_2d[0] gives the first row.
- `array_2d[:,i]` gives the `i+1 th column`, like array\_2d[:, 0] gives the first column.
- 'array\_2d[a:b]`gives the element in`a+1 th row`and`b+1 th column`, like array\_2d[0][0] gives the element in first row and first column. (1st element in 1st row)

### Slicing :

```
array_2d = np.array(['a', 'b', 'c', 'd'],
                    ['e', 'f', 'g', 'h'],
                    ['i', 'j', 'k', 'l']])

```

We will see possible ways of slicing 2d arrays.

- `array_2d[1:3]` gives the complete rows having index from 1 till 3 (excluding 3) same as in 1d arrays.
- `array\_2d[1:3, 2:4] gives the elements in rows having index 1 to 3 and columns having index 2 to 4.
- `array_2d[:, 0:4:2]` gives elements in all rows, columns having indices from 0 to 4 with a step of 2.

We also can modify the elements in 2d arrays same as in 1d arrays.

### 🖐Conclusion

Finally, In this article we learned how to perform indexing ad slicing on Numpy Arrays (both 1D and 2D arrays)

What's Next ?

Thank you for reading so far🙏. I hope you enjoyed following it and understood how to do indexing and slicing on Numpy Arrays. I highly recommend you to try these methods.

In the next part, we will discuss the **Advanced Indexing and Slicing** methods of Numpy Arrays in detail and then **Operations on Arrays**!! So Stay Tuned👀👀!!!!

Do share your valuable suggestions and your honest feedback, also Constructive Criticism. If you have any comments, questions, or concerns, Do comment them and I am more than happy to take them💬.

Happy Learning 😊👍!!