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

У меня есть массив с формой: (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 / scipy / matplotlib с минимальным сглаживанием
  • Создайте большую матрицу из меньших матриц в numpy
  • Как создать скудную разреженную матрицу из фреймворка pandas?
  • Сгенерировать все возможные исходы k шаров в n бункерах (сумма многочленных / категориальных результатов)
  • Объекты просмотра словаря Python 3.x и matplotlib
  • Как исправить ошибку «ValueError: требуется как минимум один массив для конкатенации»
  • Ускорение расстояния между всеми возможными парами в массиве
  • Значение Matplotlib для изображения в виде массива numpy
  • Получать пересекающиеся строки по двум массивам 2D numpy
  • Что это за функция import_umath?
  • Что такое эквивалент python / numpy num2cell ()?
  • Python - лучший язык программирования в мире.