此问题已在此处有答案:
numpy.sum() giving strange results on large arrays(4个答案)
六年前就关门了。
我使用numpy就像这样的代码
>>> import numpy as np
>>> a = np.arange(1, 100000001).sum()
>>> a
987459712
我猜结果一定是5000000005000000
我注意到,直到五个数字的结果是好的。有人知道发生了什么吗?
此问题已在此处有答案:
numpy.sum() giving strange results on large arrays(4个答案)
六年前就关门了。
我使用numpy就像这样的代码
>>> import numpy as np
>>> a = np.arange(1, 100000001).sum()
>>> a
987459712
我猜结果一定是5000000005000000
我注意到,直到五个数字的结果是好的。有人知道发生了什么吗?
2条答案
按热度按时间ui7jx7zq1#
Numpy在这里没有犯错误。这种现象被称为integer overflow。
arange
中用于给定输入的32位整数类型不能容纳500000005000000。它最多可以占用2147483647。如果显式使用较大的整数或浮点数据类型,则会得到预期的结果。
bvn4nwqk2#
我怀疑你正在使用Windows,其中结果的数据类型是32位整数(而对于那些使用Mac OS X或Linux的人来说,数据类型是64位)。注意
5000000050000000 % (2**32) = 987459712
尝试使用
或
P.S.任何不使用Windows的人都可以复制结果如下: