Нарезка массива Numpy

Краткое описание: в этом уроке вы узнаете о нарезке массива numpy, которая извлекает один или несколько элементов из массива numpy.

Нарезка массивов Numpy на одномерные массивы

Массивы NumPy используют скобки [] и нотации : для нарезки подобно спискам. Используя срезы, вы можете выбрать диапазон элементов в массиве с помощью следующего синтаксиса:

[m:n]
Code language: Python (python)

Этот срез выбирает элементы, начинающиеся с m и заканчивающиеся n-1. Обратите внимание, что n-й элемент не включается. Фактически, срез m:n может быть явно определен как:

[m:n:1]
Code language: Python (python)

Число 1 указывает, что срез выбирает каждый элемент между m и n.

Чтобы выбрать каждые два элемента, можно использовать следующий срез:

[m:n:2]
Code language: Python (python)

В общем случае, следующее выражение выбирает каждый элемент k между m и n:

[m:n:k]
Code language: Python (python)

Если k отрицательно, срез возвращает элементы в обратном порядке, начиная с m до n+1. Следующая таблица иллюстрирует выражения нарезки:

Выражение нарезки Значение
a[m:n] Выбрать элементы с индексом, начинающимся на m и заканчивающимся на n-1.
a[:] или a[0:-1]. Выбрать все элементы по заданной оси
a[:n] Выберите элементы, начиная с индекса 0 и до элемента с индексом n-1
a[m:] Выбрать элементы, начиная с индекса m и до последнего элемента
a[m:-1] Выберите элементы, начиная с индекса m и до последнего элемента
a[m:n:k] Выбрать элементы с индексами от m до n (исключающие), с инкрементом k
a[::-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])
Code language: Python (python)

Вывод:

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]
Code language: Python (python)

Нарезка массивов Numpy на многомерные массивы

Чтобы нарезать многомерный массив, вы применяете квадратные скобки [] и обозначение : к каждому измерению (или оси). Слайс возвращает уменьшенный массив, каждый элемент которого соответствует правилам выбора. Например:

import numpy as np a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) print(a[0:2, :])
Code language: Python (python)

Вывод:

[[1 2 3] [4 5 6]]
Code language: Python (python)

В этом примере массив a является двумерным массивом. В выражении a[0:2, :]:

Сначала 0:2 выбирает элемент с индексами 0 и 1, а не 2, который возвращается:

[[1 2 3] [4 5 6]]
Code language: Python (python)

Затем, : выбирает все элементы. Поэтому возвращается все выражение:

[[1 2 3] [4 5 6]]
Code language: Python (python)

Рассмотрим другой пример:

import numpy as np a = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) print(a[1:, 1:])
Code language: Python (python)

Вывод:

[[5 6] [8 9]]
Code language: Python (python)

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

Во-первых, 1: выбирает элементы, начиная с индекса 1 до последнего элемента первой оси (или строки), что возвращает:

[[4 5 6] [7 8 9]]
Code language: Python (python)

Во-вторых, 1: выбирает элементы, начиная с индекса 1 до последних элементов второй оси (или столбца), что возвращает:

[[5 6] [8 9]]
Code language: Python (python)

Сводка

  • Использование нарезки для извлечения элементов из массива numpy
  • Используйте a[m:n:p] для нарезки одномерных массивов.
  • Используйте a[m:n:p, i:j:k, ...] для нарезки многомерных массивов.

Оцените статью
devanswers.ru
Добавить комментарий