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