小编VBB*_*VBB的帖子

Numpy arange浮点不一致

我有一个相当简单的numpy任务:创建一个长数组,每个元素增加0.001.当然,np.arange答案是肯定的.我限制自己的默认精度(float64).对结果的简单检查是数组的每1000个元素应该具有相同的小数部分.我通过一个情节检查(见附图中的蓝线),事实并非如此.

tmin = 212990552.75436273
tmax = 213001474.74473435
tbins = np.arange(tmin, tmax, 0.001)
plt.plot(tbins[::1000] % 1)
Run Code Online (Sandbox Code Playgroud)

嗯,我想......浮点怪物再次袭来.我开始值很大,但不是大,它搞砸了64位浮点.在我预感,我尝试以下,我认为应该是同样的事情:

nbins = tmin + np.arange(0, tmax-tmin, 0.001)
plt.plot(nbins[::1000] % 1)
Run Code Online (Sandbox Code Playgroud)

田田!那里有一个差异.差异单调地在阵列中的~10 ^ 7个元素上爬升到0.14.请注意,由于tmin是x.xxx36273,我希望所有数字都是x.xxx36273.nbins有,那tbins不.

In [68]: tbins[-1]
Out[68]: 213001474.60374644

In [69]: nbins[-1]
Out[69]: 213001474.74436274
Run Code Online (Sandbox Code Playgroud)

打电话给numpy大师 - 为什么会这样?

在小数部分看到的漂移 - 蓝线是tbins,绿线是nbins

python arrays floating-point numpy

2
推荐指数
1
解决办法
284
查看次数

标签 统计

arrays ×1

floating-point ×1

numpy ×1

python ×1