阅读(2222) (0)

NumPy 深拷贝

2021-08-31 17:24:19 更新

copy方法制作完整数组的副本及其数据。

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

copy如果不再需要原始数组,有时应该在切片后调用。例如,假设a是一个巨大的中间结果,而最终结果b只包含 的一小部分a,则在b使用切片构造时应进行深拷贝:

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

如果b = a[:100]被使用,a则被b引用并且即使del a被执行a也会保留在内存中。