NumPy 深拷貝

2021-11-06 17:33 更新

copy方法制作完整數組的副本及其數據。

  1. >>> d = a.copy() # a new array object with new data is created
  2. >>> d is a
  3. False
  4. >>> d.base is a # d doesn't share anything with a
  5. False
  6. >>> d[0, 0] = 9999
  7. >>> a
  8. array([[ 0, 10, 10, 3],
  9. [1234, 10, 10, 7],
  10. [ 8, 10, 10, 11]])

copy如果不再需要原始數組,有時應該在切片后調用。例如,假設a是一個巨大的中間結果,而最終結果b只包含 的一小部分a,則在b使用切片構造時應進行深拷貝:

  1. >>> a = np.arange(int(1e8))
  2. >>> b = a[:100].copy()
  3. >>> del a # the memory of ``a`` can be released.

如果b?=?a[:100]被使用,a則被b引用并且即使del a被執(zhí)行a也會保留在內存中。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號