• numpy copy(无拷贝 浅拷贝、深拷贝)类型说明


    numpy copy分为三种,no copy,shallow copy or view,deep copy三种。

    1 无拷贝

     简单的复制操作不会产生对象的复制操作。

    1 import numpy as np
    2 a = np.arange(12)
    3 b=a #对象复制,a,b地址一样
    4 b.shape = 3,4 #a对象的shape也会变化


    2 浅拷贝

      view操作,如numpy的slice,只会copy父对象,不会copy底层的数据,共用原始引用指向的对象数据。如果在view上修改数据,会直接反馈到原始对象。

     1 import numpy as np
     2 a = np.arange(12)
     3 b=a #对象复制,a,b地址一样
     4 b.shape = 3,4 #a对象的shape也会变化
     5 print id(a)
     6  
     7 c = a.view()#c的引用地址变化了
     8 print id(c)
     9 c.shape = 2,6 #a.shape不变,但是修改c的数据会导致a的数据也会变化
    10 c[0]=999
    11 print a
    12 
    13 
    14   #输出结果:
    15 
    16 51195536
    17 
    18 52398800
    19 [[999 999 999 999]
    20  [999 999   6   7]
    21  [  8   9  10  11]]

    3 深拷贝

    对对象及其子对象都进行copy一份,对新生成的对象修改删除操作不会影响到原对象。

    import numpy as np
    a = np.arange(12)
    b=a #对象复制,a,b地址一样
    b.shape = 3,4 #a对象的shape也会变化
    print id(a)
     
    d = a.copy()  #deep copy
    print id(d)
  • 相关阅读:
    ar游戏开发入门三步走
    什么是 OpenCL OpenGL
    https 服务器搭建
    javascript 访问cookie信息
    手机网页制作需要注意的一点东西
    asp.net下载文件几种方式
    javascriptM
    PDF转JPG
    java实现PDF转HTML
    关于mysql ERROR 1045 (28000)错误的解决办法
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725264.html
Copyright © 2020-2023  润新知