Я использую numpy.where
, и мне было интересно, есть ли простой способ избежать вызова неиспользуемого параметра. Пример:numpy.where: как отложить оценку параметров?
import numpy as np
z = np.array([-2, -1, 0, 1, -2])
np.where(z!=0, 1/z, 1)
возвращается:
array([-0.5, -1. , 1. , 1. , -0.5])
, но я получаю деление на ноль предупреждения, потому что, когда z
был 0, код по-прежнему оценивает 1/z
, даже если он не использует его.
Почему бы вам не использовать z = z [np.nonzero (z)], тогда разделите на z, но это просто возвращает 1, поэтому я не уверен, почему –
'1/z' выполняется интерпретатором как часть вызова 'where'. Это не под контролем 'where'. Но вы можете сделать 'out [ind] = 1/z [ind]' где 'ind' - маска значений ok. Существуют и другие способы деления на ноль. – hpaulj
Поиск тегов [numpy] и [divide-by-zero] – hpaulj