为什么顺序在涉及 np 的逻辑和/或操作中很重要.蟒蛇中的 NaN?



np 的布尔值。NaN 是真的。那么为什么和/或操作在 python 中表现得如此随机。

bool(np.nan) == True

如果True or np.nan评估为True那么为什么np.nan or True评估为nan?对于和操作,这是完全相反的:

True and np.nannan,而np.nan and TrueTrue

这是由于解释器使用and/or计算表达式的方式:

  • or表达式:

    如果第一个操作数True或等价于True,则不计算第二个操作数,并返回第一个操作数的值。

    如果第一个操作数False或等效于False,则计算并返回第二个操作数

    例子:

    True or np.nanbool(True)True,因此返回True

    np.nan or Truebool(np.nan)True,因此返回np.nan

    False or np.nanbool(False)False,因此返回np.nan

  • and表达式:

    如果第一个操作数False或等效于False,则不计算第二个操作数,并返回第一个操作数的值

    如果第一个操作数True或等效于True,则计算并返回第二个操作数

    例子:

    True and np.nanbool(True)True,因此返回np.nan

    np.nan and Truebool(np.nan)True,因此返回True

    False and np.nanbool(False)False,因此返回False

相关内容

  • 没有找到相关文章