Задачи на индексацию, срезы и маски NumPy

Эта подборка помогает научиться выбирать нужные элементы массива NumPy и понимать, когда изменение результата затрагивает исходные данные. Практика охватывает индексы, срезы, маски и copy.

Три способа выбрать данные

a[1, 2] выбирает элемент по координатам. a[:, 1:3] выбирает блок по диапазонам позиций. a[a > 4] выбирает элементы по условию. Полноразмерная булева маска двумерной матрицы возвращает одномерный набор значений.

import numpy as np
a = np.arange(12).reshape(3, 4)
print(a[:, 1:3].shape)
print(a[a > 8].tolist())
block = a[:, 1:3]
print(np.shares_memory(a, block))

Результат:

(3, 2)
[9, 10, 11]
True

Обычный срез разделяет память с исходным массивом. Если нужна независимая версия блока, создайте .copy(). Чтение через булеву маску или список целочисленных индексов создаёт копию; присваивание в индексированный исходный массив работает иначе.

Маршрут практики

  1. Отработайте границы и шаг двумерного среза.
  2. Объедините условия и замените элементы по маске.
  3. Сравните view и copy после изменения данных.

Для операций над выбранным блоком переходите к задачам на формы и broadcasting. Полный набор тем — практика NumPy. Объяснения по порядку доступны в бесплатном курсе.