a/b,但如果b==0则返回0

我想要一个除法方法,它返回a / b, 0if bis 0nan如果至少有一个aor bis 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 == 0vs isnan)。

回答

怎么用np.where

np.where(b==0, 0, a/b)

这假设您的输入是 numpy 数组,但您可以在此之前轻松处理转换。


以上是a/b,但如果b==0则返回0的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>