视图与拷贝(.view&.copy)

上来就飙代码

import numpy as np
a = np.arange(12)
b = a  # 完全不拷贝
print(b is a)  # True
print(id(a),id(b))

c = a.view()  # 视图(浅拷贝)
print('\n',c is a)  # False
print(c.base is a)  # True
c.shape = 2,6
print(a.shape)
c[1,2] = 999
print(a)
print(id(a),id(c))

s = a[1:6]  # 切片是一种视图
s[:] = 888
print('\n',a)

d = a.copy()  # 深拷贝
print('\n',d is a)  # False
print(d.base is a)  # False
d[4] = 777
print(a)
print(d)
print(id(a),id(d))

完全不拷贝:a与b共用同一个地址(b=a),a和b指的是同一个内容,只是叫法不一样,内容地址都一样,所以改变a,b也会变。

视图(.view): c = a.view()   c是a 的视图,可以理解为c是虚拟的,c里面没有内容,他只是将a的内容展示出来,但是它俩的地址不一样。改变c的值,a也会改变,但是改变c 的形状a 并不会改变。

深拷贝:(.copy):完全是两个东西,只是借用内容,相当于在电脑上复制一个文件到其他地方,文件内容一样,但是地址不同,之后任意改变一个文件,另一个不会改变,相互独立。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值