Нарезка массива Numpy в Python на примерах
Нарезка массива Numpy в одномерных массивах
Массивы NumPy используют скобки [] и : для нарезки списков в Python. Используя срезы, вы можете выбрать диапазон элементов массива с помощью следующего синтаксиса:
[m:n]
Этот срез выбирает элементы, начинающиеся с m и заканчивающиеся n-1. Обратите внимание, что n-й элемент не включен. Фактически, срез m:n можно явно определить как:
[m:n:1]
Число 1 указывает, что срез выбирает каждый элемент между m и n.
Чтобы выбрать каждые два элемента, вы можете использовать следующий фрагмент:
[m:n:2]
Следующее выражение выбирает каждый элемент k между m и n:
[m:n:k]
Если k отрицательное значение, срез возвращает элементы в обратном порядке, начиная с m до n+1. В следующей таблице показаны выражения среза:
Нарезка выражения | Значение |
---|---|
a[m:n] | Выбрать элементы с индексом, начинающимся с m и заканчивающимся на n-1. |
a[:] или a[0:-1] | Выбрать все элементы на данной оси. |
а[:n] | Выбор элементов, начиная с индекса 0 и до элемента с индексом n-1. |
a[m:] | Начиная с индекса m и до последнего элемента. |
a[m:-1] | Начиная с индекса m и до последнего элемента. |
a[m:n:k] | Выбрать элементы с индексами от m до n(исключительно) с шагом k. |
а[::-1] | Выбрать все элементы в обратном порядке. |
См. следующий пример:
import numpy as np a = np.arange(0, 10) print('a=', a) print('a[2:5]=', a[2:5]) print('a[:]=', a[:]) print('a[0:-1]=', a[0:-1]) print('a[0:6]=', a[0:6]) print('a[7:]=', a[7:]) print('a[5:-1]=', a[5:-1]) print('a[0:5:2]=', a[0:5:2]) print('a[::-1]=', a[::-1])
Выход:
a= [0 1 2 3 4 5 6 7 8 9] a[2:5]= [2 3 4] a[:]= [0 1 2 3 4 5 6 7 8 9] a[0:-1]= [0 1 2 3 4 5 6 7 8] a[0:6]= [0 1 2 3 4 5] a[7:]= [7 8 9] a[5:-1]= [5 6 7 8] a[0:5:2]= [0 2 4] a[::-1]= [9 8 7 6 5 4 3 2 1 0]
Нарезка массива Numpy в многомерных массивах
Чтобы разрезать многомерный массив, вы применяете квадратные скобки [] и обозначение : к каждому измерению(или оси). Срез возвращает уменьшенный массив, в котором каждый элемент соответствует правилам выбора. Например:
import numpy as np a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) print(a[0:2, :])
Выход:
[[1 2 3] [4 5 6]]
В этом примере массив a является двумерным массивом. В выражении a[0:2, :]:
Во-первых, 0:2 выбирает элемент с индексом 0 и 1, а не 2, который возвращает:
[[1 2 3] [4 5 6]]
Затем: выберите все элементы. Поэтому все выражение возвращает:
[[1 2 3] [4 5 6]]
Рассмотрим другой пример:
import numpy as np a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) print(a[1:, 1:])
Выход:
[[5 6] [8 9]]
В выражении a[1:, 1:]:
- Во-первых, 1: выбирает элементы, начиная с индекса 1 до последнего элемента первой оси(или строки), что возвращает:
[[4 5 6] [7 8 9]]
- Во-вторых, 1: выбирает элементы, начиная с индекса 1 и заканчивая последними элементами второй оси(или столбца), что возвращает:
[[5 6] [8 9]]