我希望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版本。
1条答案
按热度按时间p8h8hvxi1#
arange
文档:等间距值的数组。
对于浮点参数,结果的长度为
ceil((stop - start)/step)
。由于浮点溢出,此规则可能导致out的最后一个元素大于stop。你的
step
乘以数组的长度大于321。linspace
对端点更加小心。