numpy.reshape#
- numpy.reshape(a, /, shape=None, order='C', *, newshape=None, copy=None)[原始碼]#
在不改變資料的情況下,賦予陣列新的形狀。
- 參數:
- aarray_like
要重新塑形的陣列。
- shapeint 或 int 元組
新的形狀應與原始形狀相容。如果是一個整數,則結果將會是一個該長度的一維陣列。一個形狀維度可以是 -1。在這種情況下,該值會從陣列長度和剩餘維度推斷而得。
- order{‘C’, ‘F’, ‘A’}, optional
使用此索引順序讀取
a
的元素,並使用此索引順序將元素放入重新塑形的陣列中。 ‘C’ 表示使用 C 樣式索引順序讀取/寫入元素,最後一個軸索引變化最快,回到第一個軸索引變化最慢。 ‘F’ 表示使用 Fortran 樣式索引順序讀取/寫入元素,第一個索引變化最快,最後一個索引變化最慢。 請注意, ‘C’ 和 ‘F’ 選項不考慮底層陣列的記憶體佈局,僅參考索引的順序。 ‘A’ 表示如果a
在記憶體中是 Fortran *連續* 的,則以 Fortran 樣式索引順序讀取/寫入元素,否則以 C 樣式順序讀取/寫入。- newshapeint 或 int 元組
版本 2.1 中已棄用: 已由
shape
參數取代。為向後相容性而保留。- copybool, optional
如果
True
,則複製陣列資料。 如果None
,則僅在order
需要時才會建立副本。 對於False
,如果無法避免複製,則會引發ValueError
。 預設值:None
。
- 返回:
- reshaped_arrayndarray
如果可能,這將會是一個新的檢視物件;否則,它將會是一個副本。 請注意,無法保證返回陣列的*記憶體佈局*(C 或 Fortran 連續)。
另請參閱
ndarray.reshape
等效方法。
註解
並非總是可以在不複製資料的情況下更改陣列的形狀。
order
關鍵字給出了從a
*提取* 值,然後將值*放置*到輸出陣列中的索引順序。 例如,假設您有一個陣列>>> a = np.arange(6).reshape((3, 2)) >>> a array([[0, 1], [2, 3], [4, 5]])
您可以將重新塑形視為首先展平陣列(使用給定的索引順序),然後使用與展平時使用的相同索引順序將展平陣列中的元素插入到新陣列中。
>>> np.reshape(a, (2, 3)) # C-like index ordering array([[0, 1, 2], [3, 4, 5]]) >>> np.reshape(np.ravel(a), (2, 3)) # equivalent to C ravel then C reshape array([[0, 1, 2], [3, 4, 5]]) >>> np.reshape(a, (2, 3), order='F') # Fortran-like index ordering array([[0, 4, 3], [2, 1, 5]]) >>> np.reshape(np.ravel(a, order='F'), (2, 3), order='F') array([[0, 4, 3], [2, 1, 5]])
範例
>>> import numpy as np >>> a = np.array([[1,2,3], [4,5,6]]) >>> np.reshape(a, 6) array([1, 2, 3, 4, 5, 6]) >>> np.reshape(a, 6, order='F') array([1, 4, 2, 5, 3, 6])
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2 array([[1, 2], [3, 4], [5, 6]])