数据温习学习之路005——数组的浅拷贝、深拷贝

数据温习学习之路005——数组的浅拷贝、深拷贝

栈区:内存中的内存,运行快,空间小些

堆区:内存中的硬盘,运行稍慢,空间大些

不拷贝:b=a直接赋值,那么栈区没有拷贝,只是用了一个栈区定义了不同的名称

浅拷贝:c=a.view()只拷贝栈区,栈区指定的堆区并没有拷贝

深拷贝:d=a.copy()栈区和堆区都拷贝了

在这里插入图片描述

import numpy as np

a=np.arange(5)
print(a)# [0 1 2 3 4]

#不拷贝
b=a
print(a is b)#True

#浅拷贝
c=a.view()
print(c is a) #False

c[0]=100
print(a)
# [100   1   2   3   4]

#深拷贝
d=a.copy()
print(d is a)
# False
d[1]=100
print(a)
# [100   1   2   3   4]
print(d)
# [100 100   2   3   4]

例子:

flatten:深拷贝

ravel:浅拷贝

import numpy as np

a=np.arange(8).reshape(2,4)
#[[0 1 2 3]
 # [4 5 6 7]]
print(a)
b=a.ravel()
b[0]=88
print(a)
'''[[88  1  2  3]
 [ 4  5  6  7]]'''
#说明ravel是浅拷贝

a=np.arange(8).reshape(2,4)
print(a)
'''[[0 1 2 3]
 [4 5 6 7]]'''
c=a.flatten()
c[1]=99
print(a)
'''[[0 1 2 3]
 [4 5 6 7]]'''
# 原来的a没发生变化,说明flatten是深拷贝

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值