numpy.arange#
- numpy.arange([start, ]stop, [step, ]dtype=None, *, device=None, like=None)#
在給定區間內傳回均勻間隔的值。
arange
可以使用不同數量的位置引數呼叫arange(stop)
:值在半開區間[0, stop)
內產生 (換句話說,區間包含 start 但排除 stop)。arange(start, stop)
:值在半開區間[start, stop)
內產生。arange(start, stop, step)
值在半開區間[start, stop)
內產生,值之間的間隔由step
給定。
對於整數引數,此函數大致等同於 Python 內建的
range
,但傳回 ndarray 而不是range
實例。當使用非整數步長時,例如 0.1,通常最好使用
numpy.linspace
。請參閱下方「警告」章節以取得更多資訊。
- 參數:
- start整數或實數,選用
區間的起始。區間包含此值。預設起始值為 0。
- stop整數或實數
區間的終止。區間不包含此值,除非在某些情況下 step 不是整數,且浮點捨入誤差會影響 out 的長度。
- step整數或實數,選用
值之間的間距。對於任何輸出 out,這是兩個相鄰值之間的距離,
out[i+1] - out[i]
。預設步長大小為 1。如果 step 指定為位置引數,則也必須給定 start。- dtypedtype,選用
輸出陣列的型別。如果未給定
dtype
,則從其他輸入引數推斷資料型別。- devicestr,選用
放置建立陣列的裝置。預設值:
None
。僅用於 Array-API 互通性,因此如果傳遞,則必須為"cpu"
。2.0.0 版本新增。
- likearray_like,選用
參考物件,允許建立非 NumPy 陣列的陣列。如果作為
like
傳入的類陣列物件支援__array_function__
協定,則結果將由其定義。在這種情況下,它確保建立與透過此引數傳入的物件相容的陣列物件。1.20.0 版本新增。
- 傳回值:
- arangendarray
均勻間隔值的陣列。
對於浮點引數,結果的長度為
ceil((stop - start)/step)
。由於浮點溢位,此規則可能會導致 out 的最後一個元素大於 stop。
警告
輸出的長度可能在數值上不穩定。
另一個穩定性問題是由於
numpy.arange
的內部實作。用於填充陣列的實際步長值為dtype(start + step) - dtype(start)
,而不是 step。由於轉換或當 start 遠大於 step 時使用浮點數,可能會在此處發生精度損失。這可能會導致意外行為。例如>>> np.arange(0, 5, 0.5, dtype=int) array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) >>> np.arange(-3, 3, 0.5, dtype=int) array([-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
在這種情況下,應優先使用
numpy.linspace
。內建的
range
產生 具有任意大小的 Python 內建整數,而numpy.arange
產生numpy.int32
或numpy.int64
數字。這可能會導致大型整數值產生不正確的結果>>> power = 40 >>> modulo = 10000 >>> x1 = [(n ** power) % modulo for n in range(8)] >>> x2 = [(n ** power) % modulo for n in np.arange(8)] >>> print(x1) [0, 1, 7776, 8801, 6176, 625, 6576, 4001] # correct >>> print(x2) [0, 1, 7776, 7185, 0, 5969, 4816, 3361] # incorrect
範例
>>> import numpy as np >>> np.arange(3) array([0, 1, 2]) >>> np.arange(3.0) array([ 0., 1., 2.]) >>> np.arange(3,7) array([3, 4, 5, 6]) >>> np.arange(3,7,2) array([3, 5])