numpy.
copy
返回给定对象的数组副本。
输入数据。
控制副本的内存布局。'“c”表示“c”顺序,“f”表示“f”顺序,“a”表示“f”如果 a Fortran是连续的,否则为“c”。k'表示与 a 尽可能接近。(请注意,此函数和 ndarray.copy 非常相似,但其order=arguments的默认值不同。)
ndarray.copy
如果为True,则传递子类,否则返回的数组将强制为基类数组(默认为False)。
1.19.0 新版功能.
阵列解释 a .
参见
创建数组副本的首选方法
笔记
这相当于:
>>> np.array(a, copy=True)
实例
使用引用y和副本z创建数组x:
>>> x = np.array([1, 2, 3]) >>> y = x >>> z = np.copy(x)
注意,当我们修改x,y时,会改变,但不是z:
>>> x[0] = 10 >>> x[0] == y[0] True >>> x[0] == z[0] False
请注意np.副本是浅复制,不会复制数组中的对象元素。这对于包含Python对象的数组非常重要。新数组将包含相同的对象,如果该对象可以修改(是可变的),则可能会导致意外:
>>> a = np.array([1, 'm', [2, 3, 4]], dtype=object) >>> b = np.copy(a) >>> b[2][0] = 10 >>> a array([1, 'm', list([10, 3, 4])], dtype=object)
以确保 object 数组被复制,使用 copy.deepcopy :
object
copy.deepcopy
>>> import copy >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object) >>> c = copy.deepcopy(a) >>> c[2][0] = 10 >>> c array([1, 'm', list([10, 3, 4])], dtype=object) >>> a array([1, 'm', list([2, 3, 4])], dtype=object)