a/b,但如果b==0则返回0
我想要一个除法方法,它返回a / b
, 0
if b
is 0
,nan
如果至少有一个a
or b
is nan
,并且适用于标量和数组输入,即,
import numpy as np
def div(a, b):
out = a / b
# out[b == 0] = 0 TypeError: 'float' object does not support item assignment
# out = np.nan_to_num(out, nan=0.0)
return out
assert div(2, 1) == 2
assert np.all(div(np.array([2, 2]), np.array([1, 1])) == np.array([2, 2]))
assert np.isnan(div(np.nan, np.nan))
assert div(np.array(0), np.array(0)) == 0
np.nan_to_num
几乎可以解决问题,但我很想控制条件(b == 0
vs isnan
)。
回答
怎么用np.where
?
np.where(b==0, 0, a/b)
这假设您的输入是 numpy 数组,但您可以在此之前轻松处理转换。