Индексирование и срезы в NumPy

NumPyNumPyBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы рассмотрим концепции индексирования и срезывания в библиотеке Numpy для Python. Мы научимся получать доступ к элементам массива, изменять их и извлекать диапазон элементов. Также мы объясним и продемонстрируем различные методы индексирования в библиотеке Numpy с использованием примеров.

Советы по работе с ВМ

После запуска виртуальной машины щелкните в верхнем левом углу, чтобы переключиться на вкладку Notebook и приступить к практике в Jupyter Notebook.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook полностью загрузится. Проверка операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы столкнетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Основы

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

Срезы массивов NumPy

  • Срезы в массиве выполняются так же, как и в списках Python.
  • Если массив содержит 100 элементов и вы хотите выбрать только часть значений, вы можете выполнить срез и извлечь нужный набор значений из целого ndarray.
  • Изучите срез списков Python, и вы сможете применить то же самое к ndarray NumPy.

Индексирование массивов NumPy

  • В библиотеке NumPy есть три типа методов индексирования:
    • Доступ к полю - это прямой доступ к полю с использованием индекса значения.
    • Базовое срезывание - базовое срезывание - это просто расширение базового понятия срезывания Python до n-мерных массивов.
    • Расширенное индексирование (не рассматривается в этом практическом занятии)

Примеры

  • Перейдем к некоторым примерам, чтобы лучше понять эти концепции.

Пример 1 - Срезы ndarray

import numpy as np

a = np.arange(10)
print("The ndarray is :")
print(a)

s = slice(2,7,2)
print("After applying slice() Function:")
print (a[s])
  • Код выше создает объект ndarray с использованием функции arange().
  • Определяется объект среза с начальным значением 2, конечным значением 7 и шагом 2 соответственно.
  • Затем этот объект среза передается в ndarray. Будет отрезан участок, начиная с индекса 2 и заканчивая индексом 7 с шагом 2.

Пример 2 - Выделение одного элемента

import numpy as np

a = np.arange(15)
print("The array is :")
print(a)

## using the index directly
b = a[7]
print("The Eighth item in the array is :")
print (b)
  • Код выше извлекает один элемент из объекта ndarray.
  • Извлечение одного элемента массива можно легко выполнить с использованием индексирования.

Пример 3

import numpy as np

a = np.arange(20)
print("The array is :")
print(a)

print("Slicing of items starting from the index:")
print(a[2:])
  • Код выше выбирает элементы начиная с заданного индекса до последнего индекса или последнего элемента.

Пример 4

import numpy as np

a = np.arange(20)
print("The array is :")
print(a)

print("Slicing of items between two given indexes:")
print(a[2:8])
  • Код выше выбирает все элементы между двумя заданными индексами.
  • Он исключает значение по конечному индексу.

Использование трех точек (...)

  • При срезе трех точки (...) используются для создания кортежа выбора той же длины, что и размерность массива.
  • Для многомерного ndarray, если трех точки используются в позиции строк, то возвращается ndarray, состоящий из элементов в строках, и аналогично для столбцов.
import numpy as np
a = np.array([[11,2,23],[33,44,5],[84,25,16]])

print ("The array is :")
print (a )
print ('\n')

#To return array of items in the second column
print ('The items in the second column are:')
print (a[..., 1] )
print ('\n')

## In order to slice all items from the second row
print ('The items in the second row are:')
print (a[1,...])
print ('\n')

## In order to slice all items from column 1 onwards
print ('The items onwards to column 1 are:' )
print (a[..., 1:])

Резюме

В этом практическом занятии мы рассмотрели концепцию индексирования и среза в библиотеке Numpy. Мы изучили различные методы индексирования в библиотеке Numpy и способы среза массивов. Мы также увидели примеры, демонстрирующие практическую реализацию этих концепций.