Python: обозначение фрагментов в массивах NumPy

Введение Термин нарезка в программировании обычно относится к получению подстроки, подкортежа или подсписка из строки, кортежа или списка соответственно. Python предлагает множество простых способов разрезать не только эти три, но и любые итерируемые. Итерируемым является, как следует из названия, любой объект, который можно повторять. В этой статье мы рассмотрим все, что вам нужно знать о нарезке массивов Numpy в Python. Нарезка массива NumPy Самый распространенный способ нарезать массив NumPy - использовать

Вступление

Термин нарезка в программировании обычно относится к получению подстроки, подкортежа или подсписка из строки, кортежа или списка соответственно.

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.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus