python numpy `arange`超出结束值

7gs2gvoe  于 2023-10-14  发布在  Python
关注(0)|答案(1)|浏览(163)

我希望numpy的arange(start, end)能产生[start,end]范围内的值。下面的例子证明了这并不总是正确的(最终值大于end):

import numpy as np

start = 2e9
end = start + 321
step = 0.066833171999
x = np.arange(start, end, step=step)
print x[-1] > end  # Prints "True"
print x[-1] - end  # Prints 0.00013661384582519531

这个误差似乎太大了,不可能是机器精度造成的(但也许我想错了)。你在干什么?
我使用的是Numpy 1.10.1版本。

p8h8hvxi

p8h8hvxi1#

arange文档:
等间距值的数组。
对于浮点参数,结果的长度为ceil((stop - start)/step)。由于浮点溢出,此规则可能导致out的最后一个元素大于stop。
你的step乘以数组的长度大于321。linspace对端点更加小心。

相关问题