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