Нарезка массива 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]]

нарезка массива numpy - 2d массив

В этом примере массив 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]]

Пример нарезки 2d-массива numpy

В выражении a[1:, 1:]:

  • Во-первых, 1: выбирает элементы, начиная с индекса 1 до последнего элемента первой оси(или строки), что возвращает:
[[4 5 6]
[7 8 9]]
  • Во-вторых, 1: выбирает элементы, начиная с индекса 1 и заканчивая последними элементами второй оси(или столбца), что возвращает:
[[5 6]
 [8 9]]
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *