2015-03-02 37 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])