Извлечь индексы массива, которые содержат определенное значение

У меня есть массив с формой: (31777, 44, 44)

Его sum равна 31777.0, и каждая (44,44) сетка содержит только одну запись 1.0 в некоторых координатах.

Моя цель – получить массив формы (31777, 2), где 2 – координаты входа 1.0 в сетке. Неприятный способ сделать это – с циклом, но я ищу элегантное решение для этого.

2 Solutions collect form web for “Извлечь индексы массива, которые содержат определенное значение”

Вы можете использовать numpy.where для поиска индексов элементов в многомерном массиве, например:

 import numpy as np arr = np.array([[[1,0],[0,0]], [[0,0],[1,0]], [[0,0], [0,1]]]) arr.shape # (3, 2, 2) np.array([coord for coord in zip(*np.where(arr == 1)[1:])]) # array([[0, 0], # [1, 0], # [1, 1]]) this is an array of shape (3,2) which contains coordinates of 1.0 entry. 

Первый ответ дал мне материал Google, чтобы найти то, что я считаю оптимальным:

 np.vstack(arr.nonzero()[1:][::-1]).T 
  • Задача назначения, функция numpy?
  • Как я могу создать нужный файл .npy на диске?
  • Преобразование изображения в матрицу в python
  • Как преобразовать 1D-список python, содержащий данные изображения, в массив numpy и отобразить его
  • Библиотека в python для нейронных сетей для построения ROC, AUC, DET
  • Заполнять массивы в python (numpy)?
  • Как я могу получить текущее семя генератора случайных чисел NumPy?
  • Разделить (взорвать) строку ввода строки данных pandas в отдельные строки
  • Получение данных из массива ctypes в numpy
  • Numpy quirk: применить функцию ко всем парам двух массивов 1D, чтобы получить один 2D-массив
  • Подсчитайте вхождения определенного значения и удалите их одновременно
  • Python - лучший язык программирования в мире.