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

У меня есть массив с формой: (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 
Interesting Posts

Python: subprocess.call, stdout в файл, stderr в файл, отображение stderr на экране в режиме реального времени

Библиотека modbus Python

Как Pretty Печать CSV-файла в Python

Pyramid на App Engine получает значение InvalidResponseError: значения заголовка должны быть str, получены 'unicode'

Косинус сходства векторов разной длины?

Используйте Python для извлечения длин ветвей из Newick Format

Без проверки версий или `six`, как я могу использовать` except MyError, e: `vs` except MyError as e` для работы с Python 2 и 3?

Как передать PK или slug в DetailView с помощью RequestFactory в Django?

Как обновить версию Python?

Введенный график Matplotlib в Tkinter падает на Python 3.5

Преобразование кортежей python, списков, словарей, содержащих объекты панды (серии / dataframes), в json

subprocess.call, требующий разделения всех параметров запятыми

Как работает кеширование CherryPy?

Как найти повторяющиеся строки в текстовом файле (за исключением случая) и распечатать их?

Линейная регрессия в NumPy с очень большими матрицами – как сэкономить память?

Python - лучший язык программирования в мире.