Вступление
Термин нарезка в программировании обычно относится к получению подстроки, подкортежа или подсписка из строки, кортежа или списка соответственно.
Python предлагает множество простых способов разрезать не только эти три, но и любые итерируемые . Итерируемым является, как следует из названия, любой объект, который можно повторять.
В этой статье мы рассмотрим все, что вам нужно знать о нарезке массивов Numpy в Python .
Нарезка массива NumPy
Самый распространенный способ разрезать массив NumPy - использовать :
со следующим синтаксисом:
array[start:end]
array[start:end:step]
Параметр start
представляет начальный индекс, end
- конечный индекс,
а step
- количество элементов, которые «перешагивают».
NumPy - это бесплатный пакет Python, который, помимо прочего, предлагает n-мерные массивы.
Нарезка одномерных (одномерных) массивов в NumPy может выполняться с той же нотацией, что и нарезка обычных списков в Python:
import numpy as np
arr = np.array([1,2,3,4])
print(arr[1:3:2])
print(arr[:3])
print(arr[::2])
Выход:
[2]
[1 2 3]
[1 3]
2D-нарезка массива NumPy
2D-массив в NumPy - это массив массивов, 3D-массив - это массив массивов массивов и так далее. 2D-массив можно представить в виде такой матрицы:
import numpy
arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
print(arr)
Распечатаем эту матрицу:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
Нарезка 2D-массива может привести к получению массива или матрицы. Синтаксис, который приводит к матрице, будет следующим:
arr[startx:endx:stepx, starty:endy:stepy]
Синтаксис, который приводит к массиву:
arr[startx:endx:stepx, const]
arr[const, starty:endy:stepy]
Использование этого синтаксиса приводит к матрице, элементами которой
являются столбцы в диапазоне от startx
до endx
по оси x и строки в
диапазоне от starty
до endy
по оси y исходной матрицы:
Давайте посмотрим, как мы можем разрезать эту матрицу и к чему это приведет:
import numpy
arr = numpy.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
print("The original matrix:")
print(arr)
print("A sliced submatrix:")
print(arr[1:4,2:4])
print("A sliced subarray:")
print(arr[1,:])
print("A sliced submatrix:")
print(arr[:,3:])
print("A sliced subarray:")
print(arr[:,3])
Этот сегмент кода распечатывает:
The original matrix:
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]
[13 14 15 16]]
A sliced submatrix:
[[ 7 8]
[11 12]
[15 16]]
A sliced subarray:
[5 6 7 8]
A sliced submatrix:
[[ 4]
[ 8]
[12]
[16]]
A sliced subarray:
[ 4 8 12 16]
Заключение
Нарезать любую последовательность в Python легко, просто и интуитивно понятно. Отрицательная индексация предлагает простой способ получить первые или последние несколько элементов последовательности или изменить ее порядок.
В этой статье мы рассмотрели, как нарезать массивы Python NumPy.