Удаление элементов из numpy array по индексам: решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для быстрого исключения элементов из массива numpy можно использовать индексацию по булевому массиву:

Python
Скопировать код
import numpy as np

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

filtered_arr = arr[~np.isin(arr, remove)]

print(filtered_arr)  # [1, 3, 5]

Так, вы воспользовались функцией np.isin в сочетании с побитовым отрицанием ~, чтобы отсеить элементы.

Кинга Идем в IT: пошаговый план для смены профессии

Python и неизменяемость

Обратите внимание, что массивы в NumPy являются неизменяемыми, поэтому любые изменения в них приводят к созданию новых массивов. Следите за этим, чтобы поддерживать эффективность использования памяти и выполнения кода.

Удаление на основе индексов: на помощь приходит np.delete

Для удаления элементов по индексам пригодится функция np.delete():

Python
Скопировать код
arr = np.array([1, 2, 3, 4, 5])
indices_to_remove = [1, 3]

new_arr = np.delete(arr, indices_to_remove)

print(new_arr)  # [1, 3, 5]

np.delete гарантирует, что исходный массив не будет меняться, возвращая новый.

Искусство исключения: работы с множествами с помощью np.setdiff1d

Функция np.setdiff1d() облегчает работу с наборами данных, позволяя вычитать множества на уровне numpy:

Python
Скопировать код
arr = np.array([1, 2, 3, 4, 5])
exclude = np.array([2, 4])

new_arr = np.setdiff1d(arr, exclude)
print(new_arr)  # [1, 3, 5]

Оборона: эффективное использование булевых масок

Вы можете также уберечь свой массив от нежелательных элементов, сочетая np.arange с np.isin:

Python
Скопировать код
arr = np.array([1, 2, 3, 4, 5])
mask = np.isin(np.arange(arr.size), [1, 3])

new_arr = arr[~mask]
print(new_arr)  # [1, 3, 5]

Визуализация

Для наглядности представьте себе корзину с фруктами:

Markdown
Скопировать код
Корзина до: [🍏, 🍌, 🍇, 🍓, 🥝, 🍇]

Предположим, вы не любите виноград 🍇. Удаляем его:

Python
Скопировать код
numpy_array = numpy_array[numpy_array != 🍇]

Теперь у вас корзина заполнена только любимыми фруктами:

Markdown
Скопировать код
Корзина после: [🍏, 🍌, 🍓, 🥝]

Мастер-класс по рефинированным техникам удаления

Комбинирование условий: совместное использование – это эффективно!

Благодаря NumPy вы можете сочетать условия с помощью логических операций, создавая сложные маски:

Python
Скопировать код
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

new_arr = arr[~((arr % 2 == 0) | (arr > 7))]

print(new_arr)  # [1, 3, 5, 7]

Использование np.where для скрытого исключения элементов

Если же потребуется исключить элементы по условию, отличный помощник – функция np.where():

Python
Скопировать код
arr = np.array([1, 2, 3, 4, 5])
indices = np.where(arr < 4)

new_arr = np.delete(arr, indices)

print(new_arr)  # [4, 5]

Работа с многомерными массивами: применение np.delete с учетом оси

При работе с многомерными массивами исключение элементов проводите, учитывая ось axis:

Python
Скопировать код
arr = np.array([[1, 2], [3, 4], [5, 6]])

new_arr = np.delete(arr, [0, 2], axis=0)

print(new_arr)  # [[3, 4]]

Полезные материалы

  1. Индексирование массивов ndarrays — Руководство NumPy v1.26
  2. GitHub – numpy/numpy: Базовый пакет для научных вычислений в Python
  3. numpy.delete — Руководство NumPy v1.26
  4. NumPy arange(): Применение функции np.arange() – Real Python
  5. Маскированные массивы — Руководство NumPy v1.26
  6. Введение в NumPy – GeeksforGeeks