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

为什么在计算反转布尔值系列的总和时需要括号或新变量?

为什么在计算反转布尔值系列的总和时需要括号或新变量?

繁花不似锦 2021-08-24 18:03:38
鉴于一些数据:>> s = pd.Series([True, False, True, False, True])>> ~s.values == (~s).valuesarray([True,  True, True,  True, True])但是>> ~s.values.sum()-4 >> (~s).values.sum()2并且>> x = ~s.values>> x.sum() == (~s).values.sum()True为什么我们需要使用括号(~s).values或存储~s.values在一个新变量中才能为~Series.sum()我们提供正确数量的False值s?这是因为优先级,如@juanpa.arrivillaga 和@cwallenpoole 所述。确实:>> ~3 is -4True
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

由于优先级的属性的访问比的高优先级~操作。所以它在被否定之前被求和。

许多 numpy/pandas 对象覆盖了矢量化计算的按位运算符。不幸的是,这将导致他们的行为出乎意料。

换句话说,它被评估为:

~((s.values).sum())


查看完整回答
反对 回复 2021-08-24
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

如果没有括号,首先使用原始值调用 sum()。然后 sum() 的结果被反转。使用 (~values).sum 首先反转值,然后使用反转列表对 sum() 进行校准。


查看完整回答
反对 回复 2021-08-24
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

它与评估顺序(或优先级)有关。~产生向右的表达式反转。


查看完整回答
反对 回复 2021-08-24
  • 3 回答
  • 0 关注
  • 214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信