Учебник по NumPy

ГЛАВНАЯ Введение в NumPy Начало работы с NumPy NumPy Создание массивов Индексация массива NumPy Нарезка массива NumPy Типы данных NumPy Копирование NumPy против просмотра Форма массива NumPy Изменение формы массива NumPy Итерация массива NumPy Объединение массивов NumPy Разделение массива NumPy Поиск массива NumPy Сортировка массива NumPy Фильтр массива NumPy

NumPy Случайный

Случайное вступление Распределение данных Случайная перестановка Морской модуль Нормальное распределение Биномиальное распределение Распределение рыбы Равномерное распределение Логистическая дистрибуция Полиномиальное распределение Экспоненциальное распределение Распределение площади Хи Рэлеевское распределение Распределение Парето Распределение Zipf

NumPy ufunc

Введение ufunc Создать функцию ufunc Простая арифметика ufunc Округление десятичных знаков Журналы UFUNC ufunc Суммирование продукты ufunc Отличия ufunc ufunc Поиск LCM ufunc Поиск НОД ufunc Тригонометрический ufunc Гиперболический ufunc набор операций

Викторина/Упражнения

Викторина NumPy NumPy-упражнения

Массив фильтров NumPy


Фильтрация массивов

Извлечение некоторых элементов из существующего массива и создание из них нового массива называется фильтрацией .

В NumPy вы фильтруете массив, используя список логических индексов .

Список логических индексов — это список логических значений, соответствующих индексам в массиве.

Если значение по индексу равно Trueтому, что элемент содержится в отфильтрованном массиве, если значение по этому индексу равно Falseтому, что элемент исключается из отфильтрованного массива.

Пример

Создайте массив из элементов по индексу 0 и 2:

import numpy as np

arr = np.array([41, 42, 43, 44])

x = [True, False, True, False]

newarr = arr[x]

print(newarr)

Вернется приведенный выше пример [41, 43], почему?

Потому что новый фильтр содержит только те значения, где массив фильтров имел значение True, в данном случае индекс 0 и 2.


Создание массива фильтров

В приведенном выше примере мы жестко закодировали значения True и False, но обычно их используют для создания массива фильтров на основе условий.

Пример

Создайте массив фильтров, который будет возвращать только значения выше 42:

import numpy as np

arr = np.array([41, 42, 43, 44])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is higher than 42, set the value to True, otherwise False:
  if element > 42:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)


Пример

Создайте массив фильтров, который будет возвращать только четные элементы из исходного массива:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

# Create an empty list
filter_arr = []

# go through each element in arr
for element in arr:
  # if the element is completely divisble by 2, set the value to True, otherwise False
  if element % 2 == 0:
    filter_arr.append(True)
  else:
    filter_arr.append(False)

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Создание фильтра непосредственно из массива

Приведенный выше пример — довольно распространенная задача в NumPy, и NumPy предоставляет хороший способ ее решения.

Мы можем напрямую подставить массив вместо итерируемой переменной в наше условие, и оно будет работать именно так, как мы ожидаем.

Пример

Создайте массив фильтров, который будет возвращать только значения выше 42:

import numpy as np

arr = np.array([41, 42, 43, 44])

filter_arr = arr > 42

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)

Пример

Создайте массив фильтров, который будет возвращать только четные элементы из исходного массива:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7])

filter_arr = arr % 2 == 0

newarr = arr[filter_arr]

print(filter_arr)
print(newarr)