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