# 视图和复制

# 视图

  • 不同的数组对象可以共享同样的数据(此外其他都是对立的)。view方法就可以实现这一操作。

    c = a.view()   # 现在开始c是一个新的数组,并且和a共享数据
    c is a      # 说明c和a是两个不同的对象
    False
    c.base is a                        # c是a数组的数据视图
    True
    c.shape = 2,6                      # a的形状不会发生改变
    a.shape
    (3, 4)
    c[0,4] = 1234                      # 但是a的数据会跟着发生改变
    a
    array([[   0,    1,    2,    3],
           [1234,    5,    6,    7],
           [   8,    9,   10,   11]])
    

# 复制

  • copy方法生成数组的一个完整的拷贝,包括其数据。

    >>> d = a.copy()                       
    >>> d is a
    False
    >>> d.base is a                   
    False
    >>> d[0,0] = 9999
    >>> a
    array([[   0,   10,   10,    3],
           [1234,   10,   10,    7],
           [   8,   10,   10,   11]])