На этом шаге мы перечислим основные способы получения срезов в NumPy.
В примере предыдущего шага мы выбрали конкретную цифру на первой оси, использовав синтаксис train_images[i]. Операция выбора конкретного элемента в тензоре называется получением среза тензора. Посмотрим, какие операции получения среза тензора можно использовать с массивами NumPy.
Следующий пример извлекает цифры с 10-й до 100-й (100-я цифра не включается в срез) и помещает их в массив с формой (90, 28, 28):
>>> my_slice = train_images[10:100]
>>> my_slice.shape
(90, 28, 28)
Это эквивалентно более подробной форме записи, в которой определяются начальный и конечный индексы среза для каждой оси тензора. Обратите внимание, что : эквивалентно выбору всех элементов на оси:
>>> my_slice = train_images[10:100, :, :] # Эквивалентно предыдущему примеру >>> my_slice.shape (90, 28, 28) >>> my_slice = train_images[10:100, 0:28, 0:28] # Также эквивалентно предыдущему примеру >>> my_slice.shape (90, 28, 28)
В общем случае можно получить срез между любыми двумя индексами по каждой оси тензора. Например, вот как можно выбрать пиксели из области 14 * 14 в правом нижнем углу каждого изображения:
my_slice = train_images[:, 14:, 14:]
Также допускается использовать отрицательные индексы. Как и отрицательные индексы в списках на Python, они будут откладываться от конца текущей оси. Например, обрезать все изображения, оставив только квадрат 14 * 14 пикселей в центре, можно следующим образом:
my_slice = train_images[:, 7:-7, 7:-7]
На следующем шаге мы рассмотрим пакеты данных.