为了账号安全,请及时绑定邮箱和手机立即绑定

Python numpy.nan和逻辑函数:错误的结果

Python numpy.nan和逻辑函数:错误的结果

慕娘9325324 2021-04-04 04:38:07
当尝试对可能包含nan值(如numpy中定义)的数据求逻辑表达式时,我得到一些令人惊讶的结果。我想了解为什么会出现这种结果以及如何实施正确的方法。我不明白的是为什么这些表达式求值的价值:from numpy import nannan and True>>> True# this is wrong.. I would expect to evaluate to nanTrue and nan>>> nan# OKnan and False>>> False# OK regardless the value of the first element # the expression should evaluate to FalseFalse and nan>>> False#ok同样适用于or:True or nan>>> True #OKnan or True>>> nan #wrong the expression is TrueFalse or nan>>> nan #OKnan or False>>> nan #OK如何实现(以有效的方式)正确的布尔函数,同时处理nan值?
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

在评估包含的逻辑表达式时and,我们必须评估and运算符两侧都存在的表达式。而对于or运算符,如果第一个表达式为True,则无需检查第二个表达式的正确性

例如,在评估表达式时2>2 and 3==3,首先我们应该检查第一个表达式是否2>2为True。如果第一个表达式为False,则由于AND运算符而无需检查第二个表达式,并且该表达式的结果将为FALSE,因为第一个表达式为FALSE。而如果表达式为2==2 AND 3==3,则由于第一个表达式2==2为True,则我们无需检查第二个表达式的正确性,并且由于此处第二个表达式也为True,因此输出为TRUE。

在中nan and True,由于nan是True且由于AND运算符,所以python现在将评估第二个表达式并返回第二个表达式的值。因此,在这里您将获得TRUE输出。将相同的逻辑应用于时True and nan,您可以期望将其nan作为输出。

ORoperator中,如果我们看第一个表达式就足够了,因此“True or nan将返回True


查看完整回答
反对 回复 2021-04-05
  • 2 回答
  • 0 关注
  • 224 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号