numpy.ma.arange#

ma.arange([start, ]stop, [step, ]dtype=None, *, device=None, like=None) = <numpy.ma.core._convert2ma object>#

在給定區間內返回均勻間隔的值。

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 新增功能。

返回:
arangeMaskedArray

均勻間隔值的陣列。

對於浮點引數,結果的長度為 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

參見

numpy.linspace

均勻間隔的數字,並仔細處理端點。

numpy.ogrid

N 維中均勻間隔的數字陣列。

numpy.mgrid

N 維中網格狀的均勻間隔數字陣列。

如何建立具有規則間隔值的陣列

範例

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