标准python列表的总和x = list(range(100000))与相同序列x_array = np.array(x)的总和不一致。在第一种情况下,我获得sum(x)= 4999950000,这是正确的结果。使用numpy sum我得到np.sum(x_array))= 704982704。这让我感到困扰,因为我是这种语言的初学者。有人对此差异有解释吗?谢谢。代码是
import numpy as np
x=list(range(100000))
print("sum x using standard python function = ",sum(x))
x_array=np.array(x)
print("sum x using numpy =",np.sum(x_array))
答案 0 :(得分:2)
您的NumPy默认为标准的32位整数; Python将根据需要切换到无限长的整数。
您被溢出/环绕咬住了。
4999950000 % (2**32) ==> 704982704