numpy.copy用法

用法:

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

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

参数

返回

a array_like

输入数据。

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

控制副本的内存布局。 “C”表示C-order,“F”表示F-order,如果 a 是 Fortran 连续的,“A”表示“F”,否则表示“C”。 ‘K’表示尽可能匹配a的布局。 (请注意,此函数和 ndarray.copy 非常相似,但它们的 order= 参数具有不同的默认值。)

subok 布尔型,可选

如果为 True,则子类将为 passed-through,否则返回的数组将被强制为 base-class 数组(默认为 False)。

arr ndarray

a. 数组解释

注意

这相当于:

>>> 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 清除先前设置的 WRITEABLE=False 标志。

>>> a = np.array([1, 2, 3])
>>> a.flags["WRITEABLE"] = False
>>> b = np.copy(a)
>>> b.flags["WRITEABLE"]
True
>>> b[0] = 3
>>> b
array([3, 2, 3])

请注意, 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)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值