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.