numpy.ndarray.resize#

方法

ndarray.resize(new_shape, refcheck=True)#

原地更改陣列的形狀和大小。

參數:
new_shape整數元組,或 n 個整數

調整大小後陣列的形狀。

refcheck布林值,選填

若為 False,則不會檢查參考計數。預設值為 True。

回傳:
引發:
ValueError

如果 a 不擁有自己的資料,或存在對其的參考或視圖,且資料記憶體必須變更。僅限 PyPy:如果資料記憶體必須變更,則始終會引發錯誤,因為沒有可靠的方法可以判斷是否存在對其的參考或視圖。

SystemError

如果指定了 order 關鍵字引數。此行為是 NumPy 中的一個錯誤。

另請參閱

resize

回傳具有指定形狀的新陣列。

註解

如果需要,這會重新分配資料區域的空間。

只有連續陣列(資料元素在記憶體中是連續的)才能調整大小。

參考計數檢查的目的是確保您不會將此陣列用作另一個 Python 物件的緩衝區,然後重新分配記憶體。但是,參考計數可能會以其他方式增加,因此如果您確定沒有與另一個 Python 物件共用此陣列的記憶體,則可以安全地將 refcheck 設定為 False。

範例

縮小陣列:陣列會被扁平化(按照資料在記憶體中儲存的順序)、調整大小和重新塑形

>>> import numpy as np
>>> a = np.array([[0, 1], [2, 3]], order='C')
>>> a.resize((2, 1))
>>> a
array([[0],
       [1]])
>>> a = np.array([[0, 1], [2, 3]], order='F')
>>> a.resize((2, 1))
>>> a
array([[0],
       [2]])

放大陣列:如上所述,但遺失的條目會以零填充

>>> b = np.array([[0, 1], [2, 3]])
>>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
>>> b
array([[0, 1, 2],
       [3, 0, 0]])

參考陣列會阻止調整大小…

>>> c = a
>>> a.resize((1, 1))
Traceback (most recent call last):
...
ValueError: cannot resize an array that references or is referenced ...

除非 refcheck 為 False

>>> a.resize((1, 1), refcheck=False)
>>> a
array([[0]])
>>> c
array([[0]])