Фильтрация массивов NumPy
- Предыдущая страница Сортировка массивов NumPy
- Следующая страница Случайные значения в NumPy
Рекомендации по курсу:
Фильтрация массива
В NumPy мы используем список булевых индексов для фильтрации массива.
Булевы индексы списка - это список булевых значений, соответствующих индексам в массиве.
если значение по индексу True
элемент будет включен в отфильтрованный массив; если значение по индексу False
элемент будет исключен из отфильтрованного массива.
Пример
Создание массива из элементов по индексам 0 и 2, 4:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) x = [True, False, True, False, True] newarr = arr[x] print(newarr)
В предыдущем примере вернется [61, 63, 65]
почему?
Потому что новый фильтр содержит только значения из массива фильтров True
значений, поэтому в данном случае индексы 0 и 2, 4.
создания массива фильтров
В предыдущем примере мы создаем массив фильтров для True
и False
Значение硬编码,но обычно используется для создания массива фильтров на основе условий.
Пример
Создайте фильтрующий массив, который возвращает только значения, превышающие 62:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) # Создайте пустой список filter_arr = [] # Пройдемся по каждому элементу в arr for element in arr: # Если элемент больше 62, то значение устанавливается в True, в противном случае в False: if element > 62: 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]) # Создайте пустой список filter_arr = [] # Пройдемся по каждому элементу в arr for element in arr: # Если элемент можно делить на 2 без остатка, установите значение в True, в противном случае установите 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 предоставляет отличные методы для решения этой проблемы.
Мы можем заменить массив в условиях вместо переменной iterable, и он будет работать так, как мы ожидаем.
Пример
Создайте фильтрующий массив, который возвращает только значения, превышающие 62:
import numpy as np arr = np.array([61, 62, 63, 64, 65]) filter_arr = arr > 62 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)
- Предыдущая страница Сортировка массивов NumPy
- Следующая страница Случайные значения в NumPy