标题:
Numpy 模块基础学习(7)
[打印本页]
作者:
look_w
时间:
2019-2-19 16:26
标题:
Numpy 模块基础学习(7)
7. 数组的copy与deep copy
数组的复制与list复制方式类似,分浅复制与深度复制,简单的复制是使几个变量指向同一个指针,因此这几个变量中的一个改变,其余的几个也会跟着改变,而deep copy方式是将一个变量的值赋给另一个变量,两者指向不同的指针,只是值相同。
>>>import numpy as np
>>>a=np.arange(4)
>>>a
array([0, 1, 2, 3])
>>>b=a
>>>c=b
>>>d=c # a,b,c,d四个变量指向同一个地址
>>>e=a.copy() # 将a的值赋给e,两者指向不同的地址
>>>a[3]=10
>>>a
array([ 0, 1, 2, 10])
>>>b
array([ 0, 1, 2, 10])
>>>e
array([0, 1, 2, 3])
奇怪的是当使用[:]的复制方式时与列表复制出现了不同的结果,列表中的[:]与copy复制效果是相同的,而在数组中却出现了不同,数组中[:]复制的两个变量的变化仍然保持一致性
>>>import numpy as np
>>>a=np.arange(4)
>>>b=a
>>>c=a[:]
>>>d=a.copy()
>>>a[3]=10
>>>id(a)
140572616448320
>>>id(b)
140572616448320 # a,b的指针地址相同
>>>id(c)
140572616446080
>>>id(d)
140572616448640
>>>a
array([ 0, 1, 2, 10])
>>>b
array([ 0, 1, 2, 10])
>>>c
array([ 0, 1, 2, 10]) # a,c的指针地址不同,变化却是一致的
>>>d
array([0, 1, 2, 3])
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0