NumPy之浅拷贝和深拷贝
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NumPy之浅拷贝和深拷贝相关的知识,希望对你有一定的参考价值。
参考技术A 一次性搞定NumPy入门基础知识NumPy之操控ndarray的形状
NumPy之浅拷贝和深拷贝
NumPy之索引技巧
NumPy经常会操作size很大的数据结构,如果不加小心,会产生很大的内存和性能浪费,因此要理解操作中的各种行为,根据实际情况选择最合理的方法。
如果只是进行简单的赋值操作,是不会发生拷贝行为的。
这是由Python语言层面保证的,在进行赋值操作时,Python进行的时引用传递,两个变量指向同一块内存区域。
不同的ndarray对象可以共享相同的数据区。 view 方法可以新建一个新的ndarray,这个新的ndarray和原始的ndarray不是一个对象(意味着除了数据区,其他一些属性,例如形状,都可以是不同的):
注意,索引操作返回的就是原始ndarray的一个view:
copy 方法可以生成一个完整的新ndarray对象,这个ndarray对象和原始的ndarray没有任何关系:
一个典型的应用场景是:如果使用索引操作后,原始的ndarray已经不需要了,那么就可以首先进行一个深拷贝,然后销毁原始ndarray,这样会减少内存消耗。
lua踩坑系列之浅拷贝与深拷贝
每日一荤
剪发去了,洗头小妹,给我系上围布,看到我的表情,唬了她一跳,大,大哥,你眼睛好大哦!我说妹子,不是哥眼睛大,你再勒紧点,我还能把舌头吐出来!
1
拷贝对象为string、number、boolean等基础类型时,拷贝的过程是进行复制粘贴。创建一个新的对象,拷贝出来的新对象和原来的对象互不影响,互不干涉,所以修改拷贝出来的对象的值不会影响到原来的对象的值!
local value_A=10
local value_B=value_A
print("A的值:"..value_A)
print("B的值:"..value_B)
value_B=5
print("A的值:"..value_A)
print("B的值:"..value_B)
A的值:10
B的值:10
A的值:10
B的值:5
2
拷贝对象的类型为table,拷贝出来的对象和拷贝前的实际上是同一个对象,占同一个内存,简单点说就是一个人的两个名字。如果改变了拷贝出来对象的值,原对象也会随之改变。
local tab={}
tab["csdn"]="懒人下蛋"
tab["抖音"]="shirln"
tab["微信公众号"]="懒人下蛋"
tab["QQ群"]="704621321"
for k,v in pairs(tab) do
print(k.."对应的账号:"..v)
end
local temp=tab
temp["csdn"]="爱上游戏开发"
temp["微信公众号"]="爱上游戏开发"
for k,v in pairs(tab) do
print("拷贝前的对象:"..k.."对应的账号:"..v)
end
for k,v in pairs(temp) do
print("拷贝后的对象:"..k.."对应的账号:"..v)
end
csdn对应的账号:懒人下蛋
QQ群对应的账号:704621321
微信公众号对应的账号:懒人下蛋
抖音对应的账号:shirln
拷贝前的对象:csdn对应的账号:爱上游戏开发
拷贝前的对象:QQ群对应的账号:704621321
拷贝前的对象:微信公众号对应的账号:爱上游戏开发
拷贝前的对象:抖音对应的账号:shirln
拷贝后的对象:csdn对应的账号:爱上游戏开发
拷贝后的对象:QQ群对应的账号:704621321
拷贝后的对象:微信公众号对应的账号:爱上游戏开发
拷贝后的对象:抖音对应的账号:shirln
function clone(master)
local temp = {}
for k, v in pairs(master) do
if type(v) == "table" then
temp[k] = clone(v)
else
temp[k] = v
end
end
return temp
end
local tab={}
tab["csdn"]="爱上游戏开发"
tab["抖音"]="shirln"
tab["微信公众号"]="爱上游戏开发"
tab["QQ群"]="704621321"
local temp=clone(tab)
prring(temp)
输出结果:
704621321
shirln
爱上游戏开发
爱上游戏开
不要去等明天,不要去相信永远,你所能做的,就是眼前。你所爱,为尔所为。没有人会等你,在这风雨飘摇的人生路上。你所能做的,就是让自己更快、更强。
-————每日鸡汤
长按识别
关注懒人下蛋
以上是关于NumPy之浅拷贝和深拷贝的主要内容,如果未能解决你的问题,请参考以下文章