numpy.copy
numpy.copy(a, order='K', subok=False) [source]
返回给定对象的数组副本。
参数: | a :array_like 输入数据。 order : 控制副本的内存布局。
否则为 (请注意,此函数和ndarray.copy非常相似, 但是它们的order =参数具有不同的默认值。) subok: 如果为 1.19.0版中的新功能。 |
返回值: | arr :ndarray 与 |
Notes
这等效于:
>>> np.array(a, copy=True)
例子
创建一个数组x,其引用为y,副本为z:
>>> 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.copy
是浅表副本,不会复制数组中的对象元素。这对于包含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)