Python 步长为0.005的numpy.arange的意外输出
我正在使用numpy.arange在两个限制之间创建一个步长为0.005的numpy数组。通常情况下,我希望输出上升到但不包括停止点。例如,我正在使用以下内容:Python 步长为0.005的numpy.arange的意外输出,python,arrays,python-3.x,numpy,Python,Arrays,Python 3.x,Numpy,我正在使用numpy.arange在两个限制之间创建一个步长为0.005的numpy数组。通常情况下,我希望输出上升到但不包括停止点。例如,我正在使用以下内容: np.arange(2.23, 2.24, 0.005) 我期望: array([ 2.23 , 2.235]) 然而,我得到的是: array([ 2.23 , 2.235, 2.24 ]) 现在这就是我真正想要的数组,因为我要在停止点上加0.005,但我不清楚为什么会这样。当我使用较大的数字和步长时,它的行为与正常情况相
np.arange(2.23, 2.24, 0.005)
我期望:
array([ 2.23 , 2.235])
然而,我得到的是:
array([ 2.23 , 2.235, 2.24 ])
现在这就是我真正想要的数组,因为我要在停止点上加0.005,但我不清楚为什么会这样。当我使用较大的数字和步长时,它的行为与正常情况相同。这是我不知道的功能吗?
linspace
可能更适合您的需要
In [401]: np.linspace(2.23, 2.24,3)
Out[401]: array([ 2.23 , 2.235, 2.24 ])
您可以指定步数,而不是间隔。它有额外的参数来控制细节,比如端点的包含与否
In [415]: np.linspace(2.23, 2.24,2,endpoint=False)
Out[415]: array([ 2.23 , 2.235])
这些文档说明如下:停止:编号间隔结束。间隔不包括此值,除非在某些情况下步长不是整数,浮点舍入会影响out的长度。因此在您的情况下,之所以包括此值,是因为您使用浮点作为步长值,并且舍入会影响返回数组的长度,参见文档:文档中完全忽略了这一点。谢谢你指出这一点。