# Array Slicing in NumPy

## NumPy – Array Slicing

Array slicing is a process of reading elements in a specific index range.

If the array is multi-dimensional, we can specify index in multi-dimensions to get the specific array slice.

## Slicing 1-D NumPy Array

To slice a 1-D Array from specific starting position upto a specific ending position, use the following syntax.

``arr[start:end]``

Element at the `end` index is not included.

In the following program, we take a 1-D NumPy Array, and do slicing with the slice `[1:5]`.

Python Program

``````import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr[1:5])``````
Run

Output

``[2 3 4 5]``

Explanation

``````array : [1, 2, 3, 4, 5, 6, 7, 8]
index :  0  1  2  3  4  5  6  7
|           |
start        end
slice :     2, 3, 4, 5``````

If `start` is not specified, then the starting index of the array `0` is taken. If `end` is not specified, then length of the array is taken.

## Slicing 1-D NumPy Array in Steps

We can also slice the array in steps.

The syntax to slice a 1-D NumPy Array in steps is

``arr[start:end:step]``

In the following program, we take a 1-D NumPy Array, and slice it in steps of 2.

Python Program

``````import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr[1:5:2])``````
Run

Output

``[2 4]``

Explanation

``````array : [1, 2, 3, 4, 5, 6, 7, 8]
index :  0  1  2  3  4  5  6  7
|           |
start        end
step=2:     *     *
slice :     2,    4``````

## Slicing 2-D NumPy Array

Just like a 1-D Array, we can also slice a 2-D Array.

To slice a 2-D Array from specific starting position upto a specific ending position, in the two dimensions, use the following syntax.

``arr[start_dim1:end_dim1, start_dim2:end_dim2]``

where

• `start_dim1:end_dim1` is the start and end index of slice in the first dimension.
• `start_dim2:end_dim2` is the start and end index of slice in the second dimension.

In the following program, we take a 2-D NumPy Array, and slice it.

Python Program

``````import numpy as np

arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])

print(arr[1, 1:3])``````
Run

Output

``[7 8]``

Explanation

``````array             : [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
1st dim (indexes) :  0                1
2nd dim (indexes) :   0  1  2  3  4    0  1  2  3  4
arr[1, :]         :                   [6, 7, 8, 9, 10]
arr[1, 1:3]       :                       7, 8``````

Slicing [1, 1:3] means get the elements in the second row, from index 1 to 3 (element at index=3 not included).

In the following program, we take a NumPy Array, and slice it .

Python Program

``````import numpy as np

arr = np.array([[1,  2,  3,  4,  5],
[6,  7,  8,  9,  10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]])

print(arr[0:2, 1:3])``````
Run

Output

``````[[2 3]
[7 8]]``````

Explanation

## Slicing 3-D NumPy Array

As the number of dimensions increase, just increase the number of slices in the square brackets, separated by comma.

To slice a 3-D Array from specific starting position upto a specific ending position, in different dimensions, use the following syntax.

``arr[start_dim1:end_dim1, start_dim2:end_dim2, start_dim3:end_dim3]``

where

• `start_dim1:end_dim1` is the start and end index of slice in the first dimension.
• `start_dim2:end_dim2` is the start and end index of slice in the second dimension.
• `start_dim3:end_dim3` is the start and end index of slice in the third dimension.

Instead of both start:end, we can specify only a single index. In that case, element at that index is only selected for slicing.

In the following program, we take a 3-D NumPy Array, and slice it.

Python Program

``````import numpy as np

arr = np.array([[[1,  2,  3,  4,  5],
[6,  7,  8,  9,  10]],
[[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]]])

print(arr[0, 1, 1:4])``````
Run

Output

``[7 8 9]``

## Summary

In this NumPy Tutorial, we learned how to slice a NumPy Array, how to slice a multi-dimensional NumPy Array, with examples.