gpt4 book ai didi

python - Numpy sum() 函数 + 理解 : int32 or in64?

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

为什么 numpy.sum 和 numpy.prod 函数在输入是一个 int 列表时返回 int32,而如果它是同一列表的生成器则返回 int64?在列表上操作时强制他们使用 int64 的最佳方法是什么?

例如

sum([x for x in range(800000)]) == -2122947200
sum((x for x in range(800000))) == 319999600000L

python 2.7

最佳答案

您可能正在使用 numpy.sum 而不是内置的 sum,这是 from numy import * 的副作用。建议不要这样做,因为这会造成无穷无尽的困惑。相反,使用诸如 import numpy as np 之类的东西,并使用短的 np 前缀引用 numpy 命名空间。

为了回答您的问题,numpy.sum 使累加器类型与数组类型相同。在 32 位系统上,numpy 将列表强制转换为 int32 数组,这导致 numpy.sum 使用 32 位累加器。当给定生成器表达式时,numpy.sum 回退到调用 sum,这会将整数提升为长整数。要强制对数组/列表输入使用 64 位累加器,请使用 dtype 参数:

>>> np.sum([x for x in range(800000)], dtype=np.int64)
319999600000

关于python - Numpy sum() 函数 + 理解 : int32 or in64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25357326/

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