复制
python中复制有三种
- 引用
- 浅复制
- 深复制
引用
引用操作是用‘=’来赋值,两个变量使用同一块地址区域,使用相同的数据
代码测试
a = np.arange(12)
b = a
print(b is a)
b.shape = 3,4
print(a.shape)
print(id(a))
print(id(b))
结果如下
True
(3, 4)
2772596221712
2772596221712
浅复制
浅复制使用view方法,两个变量使用不同的地址区域,使用相同的数据
代码测试
c = a.view()
print(c is a)
c.shape = 4,3
c[3,2] = 324
print(a.shape)
print(id(a))
print(id(c))
print(a)
结果如下
False
(3, 4)
2772596221712
2772626268768
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 324]]
深复制
深复制使用copy方法,两个变量使用不同的地址区域,使用不同的数据
代码测试
d = a.copy()
d[0,0] = 987
print(d)
print(id(a))
print(id(d))
print(a)
结果如下
[[987 1 2 3]
[ 4 5 6 7]
[ 8 9 10 324]]
2772596221712
2772628476192
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 324]]