NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中copy方法的使用。

numpy.copy

numpy.copy(a, order='K', subok=False) [source]

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

参数:

a :array_like

输入数据。

order :{‘C’, ‘F’, ‘A’, ‘K’}, 可选

控制副本的内存布局。'C'表示C-order,

'F'表示F-order,

'a'表示'F'(如果a与Fortran相邻),

否则为'C'“K”的装置的布局匹配一个尽可能接近。

(请注意,此函数和ndarray.copy非常相似,

但是它们的order =参数具有不同的默认值。)

subokbool,可选

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

1.19.0版中的新功能。

返回值:

arr :ndarray

a相同的数组

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)

文档:numpy.copy.html

推荐文档

相关文档

大家感兴趣的内容

随机列表