Перейти до основного контенту

NumPy: як знайти індекси елементів у підмасиві в Python

6 хв читання
687 переглядів

NumPy-це бібліотека Python, яка надає багато функцій для наукових обчислень. Однією з таких функцій є пошук індексів елементів у підмасиві. Це дуже корисна дія, яка дозволяє знайти позицію конкретних елементів у масиві та використовувати цю інформацію в подальших обчисленнях.

Щоб знайти індекси елементів в підмасиві з використанням NumPy, можна скористатися функцією where. Дана функція приймає на вхід умова, яка перевіряється для кожного елемента масиву, і повертає індекси елементів, які задовольняють цій умові. Також можна використовувати функцію argwhere, яка повертає індекси елементів, для яких умова істинно.

Для прикладу, розглянемо масив, що містить числа від 0 до 9. Якщо ми хочемо знайти індекси елементів, які перевищують 5, ми можемо використовувати функцію where або argwhere з умовою "елементи більше 5". Результатом буде масив індексів, що містить позиції елементів, що задовольняють цій умові.

import numpy as np


arr = np.array([0123456789])


subarr_indices = np.where(arr > 5)


print(subarr_indices)

NumPy: як знайти індекси елементів у підмасиві в Python

Іноді нам потрібно знайти індекси елементів в підмасиві-це часто зустрічається завдання при роботі з даними. Замість того, щоб шукати елементи по одному, ми можемо використовувати NumPy для більш ефективного виконання цього завдання.

Одним із способів знайти індекси елементів у підмасиві в NumPy є використання функції numpy.where(). Ця функція повертає індекси елементів, що задовольняють заданій умові.

Щоб знайти індекси елементів у підмасиві, ми можемо порівняти кожен елемент у вихідному масиві з елементами в підмасиві. Потім, використовуючи функцію numpy.where(), ми можемо отримати індекси елементів, які задовольняють цій умові.

Нижче наведено приклад коду, який демонструє, як знайти індекси елементів у підмасиві в NumPy:

import numpy as np# Исходный массивarr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])# Подмассивsubarr = np.array([2, 4, 6])# Находим индексы элементов в подмассиве в исходном массивеindices = np.where(np.isin(arr, subarr))# Выводим индексы элементов в подмассивеprint(indices)

Результат виконання коду:

(array([2, 4, 6]),)

Як видно з результатів, індекси елементів у підмасиві [2, 4, 6] в оригінальному масиві [0123456789] рівний [2, 4, 6].

Таким чином, з використанням функції numpy.where() ми змогли ефективно знайти індекси елементів у підмасиві в NumPy.

Цим способом можна знайти індекси елементів в підмасиві будь-якої довжини, а також використовувати будь-які інші умови порівняння.

Зверніть увагу, що індексація в NumPy починається з 0.

На закінчення, NumPy надає зручні інструменти для роботи з масивами та дозволяє ефективно знаходити індекси елементів у підмасиві. Це особливо корисно при обробці великих обсягів даних або при роботі з математичними обчисленнями.

Методи пошуку індексів в підмасиві

1. Метод where()

Метод where () повертає індекси елементів підмасиву, які задовольняють певній умові. Наприклад, можна використовувати where () для пошуку індексів елементів, які перевищують певне значення:

import numpy as nparr = np.array([1, 2, 3, 4, 5])subarray = np.array([3, 4, 5])indices = np.where(np.in1d(arr, subarray))[0]print(indices)

Результатом виконання даного прикладу буде [2 3 4] , що означає, що елементи з індексами 2, 3 і 4 входять до підмасиву.

2. Метод nonzero()

Метод nonzero () повертає індекси елементів у підмасиві, які не є нульовими. Цей метод можна використовувати для пошуку індексів ненульових елементів у масиві:

import numpy as nparr = np.array([1, 0, 2, 0, 3, 0])nonzero_indices = np.nonzero(arr)[0]print(nonzero_indices)

Результатом виконання даного прикладу буде [0 2 4] , що означає, що елементи з індексами 0, 2 і 4 входять в підмасив і не є нульовими.

3. Метод argwhere()

Метод argwhere () повертає індекси елементів підмасиву, які задовольняють певним умовам. Наприклад, можна використовувати argwhere () для пошуку індексів елементів, які є парними числами:

import numpy as nparr = np.array([1, 2, 3, 4, 5])subarray = np.array([2, 4])indices = np.argwhere(np.in1d(arr, subarray)).flatten()print(indices)

Результатом виконання даного прикладу буде [1 3] , що означає, що елементи з індексами 1 і 3 входять до підмасиву і є парними числами.

Це лише деякі методи пошуку індексів у підмасиві, які надає NumPy. Використовуючи ці методи, ви можете легко знайти потрібні індекси елементів у своїх масивах та підмасивах у Python.

Як використовувати NumPy для пошуку індексів у підмасиві

Часто в процесі роботи з масивами даних виникає необхідність знайти індекси певних значень в підмасиві. Наприклад, у нас є масив чисел і ми хочемо знайти індекси всіх елементів, які перевищують певне значення.

Для вирішення такої задачі в NumPy ми можемо використовувати функцію where() , яка приймає умову як аргумент і повертає індекси відповідних елементів.

Ось приклад, який показує, як використовувати NumPy для пошуку індексів елементів, більших за 5, у підмасиві:

import numpy as np# Создаем массивarr = np.array([1, 6, 8, 3, 9, 4, 2, 7, 5])# Используем функцию where() для поиска индексов элементов, которые больше 5indices = np.where(arr > 5)# Выводим результатprint(indices) # (array([1, 2, 4, 7]),)

В даному прикладі ми створили масив arr і використовували функцію where() для пошуку індексів елементів, які більше 5. Результатом роботи функції є кортеж з одним елементом, який містить масив індексів.

Висновок програми показує, що елементи з індексами 1, 2, 4 і 7 відповідають елементам масиву arr , які більше 5.

Таким чином, NumPy надає зручний спосіб пошуку індексів елементів у підмасиві. Однак, перед використанням цієї функції, необхідно бути уважним і переконатися, що масив правильно проіндексований.