Я пытаюсь разделить один массив на другой, скажем,
a = np.array([[2., 2., 2., 2., 2.], [2., 2., 2., 2., 2.]])
b = np.array([[20., 16., 0., 10., nan], [5., 4., nan, 2., 0.]])
np.divide(a,b)
приведет к
array([[ 0.1 , 0.125, inf, 0.2 , nan],
[ 0.4 , 0.5 , nan, 1. , inf]])
и выдаст мне ошибку RuntimeWarning: деление на ноль, встречающееся в true_divide,что не является большим сюрпризом.
Я пытался
try:
np.divide(a,b)
except ZeroDivisionError:
value = float('nan')
, который не работал.Также цикл if не был решением:
if b != 0:
value = a / b
else:
value = float('nan')
дает мне ошибку: «Значение истинности массива с более чем одним элементом неоднозначно.Используйте a.any () или a.all () '.Но вместо использования
if np.any(b != 0):
в качестве первой строки получается
array([[ 10. , 8. , 0. , 5. , nan],
[ 2.5, 2. , nan, 1. , 0. ]])
То же самое относится к
if np.all(b != 0):
Я понимаю, что это должно быть связано с тем, чточто np.any просто возвращает логическое значение True или False.Нет ли другого способа заменить значения inf, которые приходят с
np.divide(a,b)
и принимать RuntimeWarning?