Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Slicing in 2D Arrays | Indexing and Slicing
Ultimate NumPy

book
Slicing in 2D Arrays

Slicing in 2D and higher-dimensional arrays works similarly to slicing in 1D arrays. However, in 2D arrays, there are two axes.

If we want to perform slicing only on axis 0 to retrieve 1D arrays, the syntax remains the same: array[start:end:step]. If we want to perform slicing on the elements of these 1D arrays (axis 1), the syntax is as follows: array[start:end:step, start:end:step]. Essentially, the number of slices corresponds to the number of dimensions of an array.

Moreover, we can use slicing for one axis and basic indexing for the other axis. Let's look at an example of 2D slicing (purple squares represent the elements retrieved from slicing, and the black arrow indicates that the elements are taken in reverse order):

import numpy as np
array_2d = np.array([
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
])
print(array_2d[1:])
print(array_2d[:, 0])
print(array_2d[1:, 1:-1])
print(array_2d[:-1, ::2])
print(array_2d[2, ::-1])
1234567891011
import numpy as np array_2d = np.array([ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ]) print(array_2d[1:]) print(array_2d[:, 0]) print(array_2d[1:, 1:-1]) print(array_2d[:-1, ::2]) print(array_2d[2, ::-1])
copy

The picture below shows the structure of the student_scores array used in the task:

Task

Swipe to start coding

You are working with a 2D NumPy array that represents the scores of three students in three different subjects. The scores for each student are stored in a separate row, with each element representing the score in a specific subject.

  1. Create a slice of student_scores that includes the last two scores of the first student (first row).

  2. Use basic indexing (positive indexing) and slicing, specifying only a positive start.

Solution

import numpy as np
# Scores of three students in three subjects
student_scores = np.array([[85, 92, 78], [88, 75, 83], [90, 88, 91]])
# Create a slice of student_scores with the scores of the first student in the last two subjects
first_student_last_two_scores = student_scores[0, 1:]
print(first_student_last_two_scores)

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 2. Chapter 4
import numpy as np
# Scores of three students in three subjects
student_scores = np.array([[85, 92, 78], [88, 75, 83], [90, 88, 91]])
# Create a slice of student_scores with the scores of the first student in the last two subjects
first_student_last_two_scores = ___
print(first_student_last_two_scores)
toggle bottom row
some-alt