numpy.ravel#

numpy.ravel(a, order='C')[source]#

返回一個連續的扁平化陣列。

返回一個包含輸入元素的一維陣列。只有在需要時才會建立副本。

從 NumPy 1.10 開始,返回的陣列將與輸入陣列具有相同的型別。(例如,遮罩陣列輸入將返回遮罩陣列)

參數:
aarray_like

輸入陣列。 a 中的元素會依照 order 指定的順序讀取,並打包為一維陣列。

order{‘C’,’F’, ‘A’, ‘K’}, 選填

a 中的元素會使用此索引順序讀取。 ‘C’ 表示以 row-major、C 風格順序為元素建立索引,最後一個軸索引變化最快,回到第一個軸索引變化最慢。 ‘F’ 表示以 column-major、Fortran 風格順序為元素建立索引,第一個索引變化最快,最後一個索引變化最慢。 請注意, ‘C’ 和 ‘F’ 選項不考慮底層陣列的記憶體佈局,僅參考軸索引的順序。 ‘A’ 表示如果 a 在記憶體中是 Fortran contiguous,則以類似 Fortran 的索引順序讀取元素,否則以類似 C 的順序讀取。 ‘K’ 表示以元素在記憶體中出現的順序讀取元素,除非在步幅為負數時反轉資料。 預設情況下,使用 ‘C’ 索引順序。

返回:
yarray_like

y 是一個與 a 具有相同子型別的連續一維陣列,形狀為 (a.size,)。 請注意,為了向後相容性,矩陣是特殊情況處理的,如果 a 是矩陣,則 y 是一個一維 ndarray。

另請參閱

ndarray.flat

陣列的一維迭代器。

ndarray.flatten

以 row-major 順序複製陣列元素的一維陣列。

ndarray.reshape

變更陣列的形狀,但不變更其資料。

註解

在 row-major、C 風格順序中,在二維情況下,row 索引變化最慢,column 索引變化最快。 這可以推廣到多維情況,其中 row-major 順序表示沿著第一個軸的索引變化最慢,而沿著最後一個軸的索引變化最快。 column-major、Fortran 風格索引順序則相反。

當希望在盡可能多的情況下使用視圖時,arr.reshape(-1) 可能更佳。 然而,ravel 在選填的 order 參數中支援 K,而 reshape 不支援。

範例

它等效於 reshape(-1, order=order)

>>> import numpy as np
>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.ravel(x)
array([1, 2, 3, 4, 5, 6])
>>> x.reshape(-1)
array([1, 2, 3, 4, 5, 6])
>>> np.ravel(x, order='F')
array([1, 4, 2, 5, 3, 6])

order 為 ‘A’ 時,它將保留陣列的 ‘C’ 或 ‘F’ 順序

>>> np.ravel(x.T)
array([1, 4, 2, 5, 3, 6])
>>> np.ravel(x.T, order='A')
array([1, 2, 3, 4, 5, 6])

order 為 ‘K’ 時,它將保留既非 ‘C’ 也非 ‘F’ 的順序,但不會反轉軸

>>> a = np.arange(3)[::-1]; a
array([2, 1, 0])
>>> a.ravel(order='C')
array([2, 1, 0])
>>> a.ravel(order='K')
array([2, 1, 0])
>>> a = np.arange(12).reshape(2,3,2).swapaxes(1,2); a
array([[[ 0,  2,  4],
        [ 1,  3,  5]],
       [[ 6,  8, 10],
        [ 7,  9, 11]]])
>>> a.ravel(order='C')
array([ 0,  2,  4,  1,  3,  5,  6,  8, 10,  7,  9, 11])
>>> a.ravel(order='K')
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])