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