2015-03-02 35 views
2

我正在使用numpy.arange在两个限制之间创建一个步长为0.005的numpy数组。通常情况下,我会预计输出会上升,但不包括停止点。例如,我现在用的是以下几点:numpy.arange的意外输出,步长为0.005

np.arange(2.23, 2.24, 0.005) 

从中我希望:

array([ 2.23 , 2.235]) 

然而,我所得到的是:

array([ 2.23 , 2.235, 2.24 ]) 

现在,这是最终的数组我真的想要,因为我要加0.005到我的停止点,但我不清楚为什么会发生这种情况。当我使用更大的数字和步长时,它的行为如同正常。这是我没有意识到的功能吗?

+7

该文档声明如下:* stop:number 区间结束。间隔不包括这个值,除非在某些情况下,step不是一个整数,并且浮点舍入会影响out。*的长度,所以在你的情况下它被包含,因为你使用float作为步长值,因为四舍五入会影响返回数组的长度,请参阅文档:http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html – EdChum 2015-03-02 09:45:29

+1

完全错过了文档中的内容。感谢您指出。 – Geoffrey 2015-03-02 09:49:19

回答

1

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])