gpt4 book ai didi

python - 两个正数相乘在 Python 3 中给出负输出

转载 作者:太空狗 更新时间:2023-10-29 21:33:46 24 4
gpt4 key购买 nike

我有一个 DataFrame df1 :

df1.head() = 

wght num_links
id_y id_x
3 133 0.000203 2
186 0.000203 2
5 6 0.000203 2
98 0.000203 2
184 0.000203 2

我需要计算一个名为 thr 的变量,

thr = N*(N-1)*2,

哪里Ndf1 的行数.

问题是当我计算 thr 时,Python 抛出一个负值(尽管所有输入都是正值):

ipdb> df1['wght'].count()*(df1['wght'].count()-1)*2
-712569744

可能的提示

行数N是

ipdb> df1['wght'].count() 
137736

因此,

ipdb> 137736*137735*2
37942135920.

考虑到可以分配给 int32 的最大值是2147483647 ,我怀疑 NumPy 考虑了 type(thr) = <int32> , 当它应该是 <int64> .这有意义吗?

请注意,我没有编写生成 df1 的代码因为

ipdb> df1['wght'].count() 
137736

但是,如果需要重现错误,请告诉我。

提前致谢。

最佳答案

您遇到了 np.int32 溢出,因此只需使用 len(df) 而不是 df.column.count()

这是一个小演示:

In [149]: x = pd.DataFrame(np.random.randint(0,100,size=(137736, 3)), columns=list('ABC'))

In [150]: x.A.count() * (x.A.count() - 1) * 2
Out[150]: -712569744

In [151]: len(x) * (len(x) - 1) * 2
Out[151]: 37942135920

In [153]: type(x.A.count())
Out[153]: numpy.int32

In [154]: type(len(x))
Out[154]: int

关于python - 两个正数相乘在 Python 3 中给出负输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880740/

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