Срезы (slice) в NumPy — это способ выбрать часть массива по одной или нескольким осям. Они похожи на срезы списков в Python, но расширены для многомерных массивов.
Синтаксис:
start:stop:stepstart— индекс начала (включительно, по умолчанию 0)stop— индекс конца (не включительно)step— шаг (по умолчанию 1, может быть отрицательным для обратного обхода)
Примеры:
1D массив:
import numpy as np
a = np.array([10, 20, 30, 40, 50])
print(a[1:4]) # [20 30 40] — элементы с индексами 1,2,3
print(a[:3]) # [10 20 30] — от начала до 3 (не включая)
print(a[::2]) # [10 30 50] — каждый второй элемент
print(a[::-1]) # [50 40 30 20 10] — массив в обратном порядке2D массив (матрица):
M = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(M[0:2, 1:3]) # [[2 3]
# [5 6]] — верхний левый блок 2x2
print(M[:, 1]) # [2 5 8] — все строки, столбец 1
print(M[1, :]) # [4 5 6] — строка 1, все столбцы
print(M[::-1, ::-1])# [[9 8 7]
# [6 5 4]
# [3 2 1]] — перевернутая матрицаОсобенности:
- Срезы возвращают view, а не копию массива (изменение среза изменяет исходный массив)
- Можно комбинировать с broadcasting и fancy indexing
- Поддерживается отрицательный шаг для обратного обхода элементов
Срезы — это основной инструмент выбора подмассивов, эффективный и удобный для работы с nD массивами.