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