Board logo

标题: 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