numpy.copy

numpy.copy(a, order='K', subok=False)[源代码]

返回给定对象的数组副本。

参数
aarray_like

输入数据。

order'C'、'F'、'A'、'K',可选

控制副本的内存布局。'“c”表示“c”顺序,“f”表示“f”顺序,“a”表示“f”如果 a Fortran是连续的,否则为“c”。k'表示与 a 尽可能接近。(请注意,此函数和 ndarray.copy 非常相似,但其order=arguments的默认值不同。)

subok可选的布尔

如果为True,则传递子类,否则返回的数组将强制为基类数组(默认为False)。

1.19.0 新版功能.

返回
arr恩达雷

阵列解释 a .

参见

ndarray.copy

创建数组副本的首选方法

笔记

这相当于:

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

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