Python: как найти индекс значения в массиве Numpy

Python numpy.where () — это встроенная функция, которая возвращает индексы элементов во входном массиве, если данное условие выполнено. Модуль Python numpy предоставляет функцию для выбора элементов по условию. Если вы хотите найти индекс в массиве Numpy, вы можете использовать функцию numpy.where ().

Как найти индекс значения в массиве Numpy

Функция Python numpy.where () выполняет итерацию по массиву bool, и для каждого True она возвращает соответствующий массив элементов x, а для каждого False, он возвращает соответствующий элемент из массива y. Таким образом, он возвращает массив элементов из x, где условие True , и элементов из y в другом месте.

Синтаксис

 numpy.where (condition [, x, y]) 

Параметры

condition: условное выражение, которое возвращает массив Numpy из bool
x, y: Arrays (необязательно, т. е. либо оба передаются, либо не передаются )

  1. Если все аргументы -> условие, x и y указаны в numpy.where (), тогда он вернет элементы, выбранные из x & y в зависимости от значений в массиве bool, полученных в результате выполнения условия. Все 3 массива должны быть одинакового размера.
  2. Если аргументы x и y не переданы, а передан только аргумент условия, то возвращается кортеж массивов (по одному для каждой оси), содержащий индексы элементов, которые имеют значение True в массиве bool numpy, возвращаемом условием.

См. следующий код.

 # app.pyimport numpy as np # Создать массив numpy из списка чиселarr = np.array ([11, 12, 13, 14, 15, 16, 17, 18  , 19, 20, 21]) result = np.where (arr == 19) print ('Возвращенный кортеж массивов:', результат) print («Элементы со значением 19 существуют в следующих индексах», result [0], sep  = ' n') 

Вывод

 python3 app.py Набор возвращаемых массивов: (array ([8]),  ) Элементы со значением 19 существуют по следующим индексам [8] 

Найти индекс значения в 1D массиве Numpy

Давайте найти элемент массива numpy со значением 19 встречается в разных местах, давайте посмотрим все его индексы .

 # app.pyimport numpy as np # Создайте массив numpy из списка чиселarr = np.array ([11, 19, 13, 14, 15, 11, 19, 21, 19  , 20, 21]) result = np.where (arr == 19) print ('Возвращенный кортеж массивов:', result) print («Элементы со значением 19 существуют по следующим индексам», result [0], sep = '   n ') 

Вывод

 python3 app.py Набор возвращаемых массивов: (array ([1, 6, 8]  ),) Элементы со значением 19 существуют по следующим индексам [1 6 8] 

result — это набор массивов (по одному для каждой оси), содержащих индексы где значение 19 существует в массиве.

Получить первый индекс элемента со значением 19.

 # app.  pyimport numpy as np # Создайте массив numpy из списка чисел arr = np.array ([11, 19, 13, 14, 15, 11, 19, 21, 19, 20, 21]) result = np.where (arr  == 19) print ('Возвращенный кортеж массивов:', результат) print ("Элементы со значением 19 сначала существуют по индексу:", результат [0] [0]) 

Выходные данные

 python3 app.pyТабль возвращаемых массивов: (array ([1, 6, 8]),) Элементы со значением 19 сначала существуют по индексу: 1 

Python numpy.where (), элементы массива NumPy ndarray, которые удовлетворяют условиям, могут быть заменены или выполнены указанной обработкой.

Что делать, если элемент не найдено в массиве numpy

Если данный элемент не существует в массиве numpy, то возвращаемый массив индексов будет пустым.

См. следующий код.

 # app.pyimport numpy as np # Создание массива numpy из списка чиселarr = np  .a  rray ([11, 19, 13, 14, 15, 11, 19, 21, 19, 20, 21]) result = np.where (arr == 46) print ('Кортеж возвращенных массивов:', результат) print  («Элементы со значением 19 сначала существуют по индексу:», результат [0] [0]) 

Вывод

 python3  app.py Набор возвращаемых массивов: (array ([], dtype = int64),) Traceback (последний вызов последним): файл «app.py», строка 9, в  print («Элементы со значением 19 существуют первыми.  at index: ", result [0] [0]) IndexError: индекс 0 выходит за границы оси 0 с размером 0 

Найти индекс значения в 2D Numpy array в Python

Давайте создадим двумерный массив numpy. См. Следующий пример кода.

 # app.pyimport numpy as np # Создайте массив numpy из списка чиселarr = np.array ([[11, 19, 18]  , [14, 15, 11], [19, 21, 46], [29, 21, 19]]) result = np.where (arr == 19) print ('Кортеж возвращенных массивов:', результат) print  («Элементы со значением 19 сначала существуют по индексу:», результат [0] [0]) 

Вывод

 python3  app.py Набор возвращаемых массивов: (array ([0, 2, 3]), array ([1, 0, 2])) Элементы со значением 19 сначала существуют по индексу: 0 

Это возвращает кортеж массивов, по одному для каждого измерения. Как и в нашем случае, это двухмерный массив, поэтому numpy.where () вернет кортеж из двух массивов.

Длина обоих массивов будет то же самое. Итак, чтобы получить список точных индексов, мы можем заархивировать эти массивы.

См. Следующий код.

 # app.pyimport numpy as np # Создайте массив numpy  из списка чиселarr = np.array ([[11, 19, 18], [14, 15, 11], [19, 21, 46], [29, 21, 19]]) result = np.where (  arr == 19) listOfIndices = list (zip (result [0], result [1])) для индекса в listOfIndices: print (index) 

Вывод

 приложение python3. py (0, 1) (2, 0) (3, 2) 

Как получить индексы элементов на основе нескольких условий в Numpy

When также может передавать несколько условий в функцию numpy.where ().

Например, получить индексы элементов со значением меньше 21 и больше 15.

 # app.pyimport numpy as np # Создайте массив numpy  из списка чисел arr = np.array ([11, 19, 18, 14, 15, 11, 19, 21, 46, 29, 21, 19]) result = np.where ((arr> 15) & (arr   

Вывод

 python3 app.py (array ([1, 2, 6,  11]),) 

В приведенном выше примере он вернет значения элементов, которые меньше 21 и больше 14.

Заключение

Если вы хотите найти индекс значения в массиве Python numpy, тогда numpy.where () .

См. также

Python numpy insert ()

Python numpy delete ()

Python numpy append ()

Python numpy arange ()

Python numpy array ()

Оцените статью
nanomode.ru
Добавить комментарий