zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    HTML语言基础
    过滤器Filter
    新闻实现分页显示
    [转]Jmeter使用入门
    [转]ZK工作原理
    [转]UT-IT-ST-BBIT-SDV-SIT-SVT
    Unix编码哲学
    火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版
    递归公用表表达式概述
    java写word转pdf
  • 原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725264.html
Copyright © 2011-2022 走看看