Примените функцию к numpyarray с проверками каждого элемента, чтобы узнать, какой результат вернуть - PullRequest
1 голос
/ 21 мая 2019

У меня есть следующая функция:

def Leaky(x):
    if(x > 0):
        return x
    else:
        return 0.01*x

и следующий массив numpy:

a = np.array([[-1,2],[-3,4]])

Как применить функцию "Leaky" к массиву "a" иизбавиться от ошибки, которую он дает:

"ValueError: Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any () или a.all ()".

Желаемый вывод:

[[-0.01,2],[-0.03,4]]

Заранее спасибо!

1 Ответ

1 голос
/ 21 мая 2019

Если вы используете numpy, лучший способ расставить точки с его помощью - np.where:

np.where(a>0, a, 0.01*a)

array([[-0.01,  2.  ],
       [-0.03,  4.  ]])

Проблема с вашим кодом в том, что когда вы делаете:

a > 0
array([[False,  True],
       [False,  True]])

Как вы можете видеть, вы получаете массив такой же формы, как и a, поскольку вы применяете условие ко всем значениям в a, следовательно, результат операции неоднозначен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...