gpt4 book ai didi

python - 为什么在计算反转 bool 系列的总和时需要括号或新变量?

转载 作者:行者123 更新时间:2023-11-28 22:14:28 25 4
gpt4 key购买 nike

给定一些数据:

>> s = pd.Series([True, False, True, False, True])

>> ~s.values == (~s).values
array([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 () 以在 s 中为我们提供正确数量的 False 值?


这是因为优先级,如@juanpa.arrivillaga 和@cwallenpoole 所述。确实:

>> ~3 is -4
True

最佳答案

因为 precedence属性访问的优先级高于 ~ 运算符。所以它在被取反之前被求和。

许多 numpy/pandas 对象覆盖了向量化计算的按位运算符。不幸的是,这会导致它们出现意外行为。

换句话说,它被评估为:

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

关于python - 为什么在计算反转 bool 系列的总和时需要括号或新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53420008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com