为什么订单在逻辑和/或涉及python中的np.NaN的操作中很重要?

时间:2018-06-05 13:14:08

标签: python numpy null logical-operators

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

bool(np.nan) == True

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

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

1 个答案:

答案 0 :(得分:1)

这是由于口译员使用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