How to Slice a NumPy Array?


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.

1. Example to slice numpy array with index [1:5]

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])

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.

2. Example to slice 1D 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])

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.

1. Example to slice 2D numpy array with index [1, 1:3]

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])

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).

2. Example to slice 2D numpy array with index [0:2, 1:3]

In the following program, we take a NumPy Array, and slice a 2x2 matrix .

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])

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])

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.