Как выполнить numpy «argany» или «argfirst»?Python

Программы на Python
Anonymous
Как выполнить numpy «argany» или «argfirst»?

Сообщение Anonymous »

Я хотел бы уменьшить многомерный массив вдоль одной оси, найдя значение first в других диапазонах, которое является правдивым/соответствует некоторому условию, или значение по умолчанию, если не удается найти соответствующие элементы . Пока что я пытаюсь сделать это для трехмерного массива с помощью простого цикла следующим образом:

Код: Выделить всё

def first(arr, condition, default):
out = default.copy()

for u in range(arr.shape[1]):
for e in range(arr.shape[2]):
(idx,) = np.nonzero(condition[:, u, e])
if len(idx):
out[u, e] = arr[idx[0], u, e]

return out
Однако это немного некрасиво, неэффективно, не векторизовано и нелегко обобщается на массивы произвольных размеров. Есть ли у numpy более удобный встроенный способ добиться этого?

Подробнее здесь: https://stackoverflow.com/questions/790 ... r-argfirst

Вернуться в «Python»