numpy.recarray.resize#
方法
- recarray.resize(new_shape, refcheck=True)#
就地變更陣列的形狀和大小。
- 參數:
- new_shape整數元組,或 n 個整數
調整大小後的陣列形狀。
- refcheckbool,選用
若為 False,則不會檢查參考計數。預設值為 True。
- 傳回:
- None
- 引發:
- 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]])