Введение
В этом практическом занятии вы познакомитесь с продвинутым индексированием в NumPy - это техника, которая используется для выбора случайных элементов из различных строк и столбцов ndarray, когда элементы, которые вы хотите выбрать, не имеют особой последовательности.
Советы по работе с ВМ
После запуска виртуальной машины кликните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится полностью. Валидация операций не может быть автоматизирована из - за ограничений в Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импорт необходимых библиотек и создание NumPy массива
Сначала нам нужно импортировать библиотеку numpy и создать NumPy массив, на котором мы будем выполнять продвинутый индексирование.
import numpy as np
x = np.array([[11, 28], [23, 84], [95, 56]])
print("The original array")
print(x)
В приведенном выше коде мы импортировали библиотеку numpy и создали NumPy массив, который мы будем использовать для продвинутого индексирования.
Целочисленное индексирование
С использованием целогочисленного индексирования мы можем выбирать произвольные элементы на основе N-мерного индекса. Каждый целочисленный массив используется для представления количества индексов в соответствующую размерность.
y = x[[0, 1, 2], [0, 0, 1]]
print("The output after integer indexing")
print(y)
В приведенном выше коде мы выполняем целоечисленное индексирование над NumPy массивом x и создаем новый массив y, который будет содержать выбранные элементы. Мы выбираем один элемент из указанного столбца из каждой строки NumPy массива x. Индекс строк содержит все номера строк, а индекс столбца задает элемент, который нужно выбрать.
Булевское индексирование
Булево индексирование используется, когда мы хотим выбрать элементы из ndarray на основе некоторого условия с использованием операторов сравнения или других операторов.
print("The items greater than 11 are:")
print(x[x > 11])
В приведенном выше коде мы выполняем булево индексирование над NumPy массивом x. Мы возвращаем элементы, которые больше 11 из NumPy массива x.
Комбинирование продвинутого и базового индексирования
Мы можем объединить продвинутое и базовое индексирование, используя один срез (:) или многоточие (...) вместе с массивом индексов.
z = x[1:4, 1:3]
print("After using basic slicing")
print(z)
y = x[1:4, [1, 2]]
print("After slicing using advance index for column")
print(y)
В приведенном выше коде мы выполняем срез NumPy массива x. Мы используем базовый срез и продвинутое индексирование для столбца.
Удалить значения, не являющиеся числом
Мы можем удалить значения "не число" (NaN) с использованием оператора дополнения (~).
a = np.array([np.nan, 1, 12, np.nan, 3, 41, 54])
print("После удаления NaN выходной массив выглядит так:")
print (a[~np.isnan(a)])
В приведенном выше коде мы удаляем значения "не число" (NaN) из NumPy массива a с использованием оператора дополнения (~).
Удалить некомплексные числа
Мы можем отфильтровать некомплексные числа из массива с использованием функции iscomplex.
a = np.array([1, 2+6j, 5, 3.5+5j])
print("После фильтрации некомплексных чисел:")
print (a[np.iscomplex(a)])
В приведенном выше коде мы отфильтровываем некомплексные числа из NumPy массива a с использованием функции iscomplex.
Резюме
В этом практическом занятии вы узнали о различных видах продвинутого индексирования элементов ndarray в библиотеке NumPy. Вы рассмотрели несколько примеров для различных типов применений продвинутого индексирования в NumPy. С использованием этой техники вы можете выбирать случайные элементы из различных строк и столбцов NumPy массива.