我原以为 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。
来自arange
docs:
均匀分布的值的数组。
对于浮点参数,结果的长度为ceil((stop - start)/step)
。由于浮点溢出,此规则可能会导致 out 的最后一个元素大于 stop。
Your step
数组长度大于 321 的倍。linspace
对终点更加谨慎。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)