Массив Numpy применяет функцию только к некоторым элементам

У меня есть массив numpy, скажем, который имеет форму (10,10), например. Теперь я хочу применить np.exp() к этому массиву, но только к некоторым конкретным элементам, которые удовлетворяют условию. Например, я хочу применить np.exp ко всем элементам, которые не равны 0 или 1. Есть ли способ сделать это без использования цикла for, который повторяет каждый элемент массива?


person Marco Miglionico    schedule 07.11.2017    source источник
comment
да. Numpy имеет как расширенное индексирование, так и < функция href="https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.where.html" rel="nofollow noreferrer">where для более сложных запросов.   -  person armatita    schedule 07.11.2017
comment
Если приведенный ниже ответ был для вас полезен, вам следует подумать о том, чтобы щелкнуть галочку рядом с ответом, чтобы переключить его с серого на заполненный. К настоящему времени вы также заработали привилегию голосовать за любой вопрос, который вы считаете полезным.   -  person vestland    schedule 19.02.2018


Ответы (1)


Это достижимо с помощью основных операций numpy. Вот как это сделать:

A = np.random.randint(0,5,size=(10,10)).astype(float)  # data
goods = (A!=0) & (A!=1)  # 10 x 10 boolean array
A[goods] = np.exp(A[goods])  # boolean indexing
person B. M.    schedule 07.11.2017