numpy copy(无拷贝 浅拷贝、深拷贝)类型说明

numpy copy分为三种,no copy,shallow copy or view,deep copy三种。

1 无拷贝

 简单的复制操作不会产生对象的复制操作。

import numpy as np
a = np.arange(12)
b=a #对象复制,a,b地址一样
b.shape = 3,4 #a对象的shape也会变化

2 浅拷贝

  view操作,如numpy的slice,只会copy父对象,不会copy底层的数据,共用原始引用指向的对象数据。如果在view上修改数据,会直接反馈到原始对象。

import numpy as np
a = np.arange(12)
b=a #对象复制,a,b地址一样
b.shape = 3,4 #a对象的shape也会变化
print id(a)

c = a.view()#c的引用地址变化了
print id(c)
c.shape = 2,6 #a.shape不变,但是修改c的数据会导致a的数据也会变化
c[0]=999
print a

 输出结果

 

51195536
52398800
[[999 999 999 999]
 [999 999   6   7]
 [  8   9  10  11]]

3 深拷贝

对对象及其子对象都进行copy一份,对新生成的对象修改删除操作不会影响到原对象。

import numpy as np
a = np.arange(12)
b=a #对象复制,a,b地址一样
b.shape = 3,4 #a对象的shape也会变化
print id(a)

d = a.copy()  #deep copy
print id(d)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值