python、numpy、pytorch中的浅拷贝和深拷贝

1、Python中的浅拷贝和深拷贝

import copya = [1, 2, 3, 4, [11, 22, 33, [111, 222]]]
b = a
c = a.copy()
d = copy.deepcopy(a)print('before modify\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')
 before modify
 a=
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 
 b = a=
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 
 c = a.copy()=
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 
 d = copy.deepcopy(a)
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 

注:图片网址Python Tutor code visualizer: Visualize code in Python, JavaScript, C, C++, and Java

a[0] = 10
print('after a[0] = 10\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')
 after a[0] = 10
 a=
 [10, 2, 3, 4, [11, 22, 33, [111, 222]]] 
 b = a=
 [10, 2, 3, 4, [11, 22, 33, [111, 222]]] 
 c = a.copy()=
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 
 d = copy.deepcopy(a)
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 
a[4][0] = 100
print('after a[4][0] = 100\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')
after a[4][0] = 100
 a=
 [10, 2, 3, 4, [100, 22, 33, [111, 222]]] 
 b = a=
 [10, 2, 3, 4, [100, 22, 33, [111, 222]]] 
 c = a.copy()=
 [1, 2, 3, 4, [100, 22, 33, [111, 222]]] 
 d = copy.deepcopy(a)
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 
a[4][3][0] = 1000
print('after a[4][3][0] = 1000\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')
after a[4][3][0] = 1000
 a=
 [10, 2, 3, 4, [100, 22, 33, [1000, 222]]] 
 b = a=
 [10, 2, 3, 4, [100, 22, 33, [1000, 222]]] 
 c = a.copy()=
 [1, 2, 3, 4, [100, 22, 33, [1000, 222]]] 
 d = copy.deepcopy(a)
 [1, 2, 3, 4, [11, 22, 33, [111, 222]]] 

2、numpy中的浅拷贝和深拷贝

a1 = np.random.randn(2, 3)
b1 = a1
c1 = a1.copy()
d1 = copy.deepcopy(a1)print('before modify\r\n a1=\r\n', a1, '\r\n','b1 = a1=\r\n', b1, '\r\n','c1 = a1.copy()=\r\n', c1, '\r\n','d1 = copy.deepcopy(a1)=\r\n', d1, '\r\n')a1[0] = 10
print('after a1[0] = 10\r\n a1=\r\n', a1, '\r\n','b1 = a1=\r\n', b1, '\r\n','c1 = a1.copy()=\r\n', c1, '\r\n','d1 = copy.deepcopy(a1)=\r\n', d1, '\r\n')

before modify
 a1=
 [[ 1.48618757 -0.90409826  2.05529475]
 [ 0.14232255  2.93331428  0.88511785]] 
 b1 = a1=
 [[ 1.48618757 -0.90409826  2.05529475]
 [ 0.14232255  2.93331428  0.88511785]] 
 c1 = a1.copy()=
 [[ 1.48618757 -0.90409826  2.05529475]
 [ 0.14232255  2.93331428  0.88511785]] 
 d1 = copy.deepcopy(a1)=
 [[ 1.48618757 -0.90409826  2.05529475]
 [ 0.14232255  2.93331428  0.88511785]] 
after a1[0] = 10
 a1=
 [[10.         10.         10.        ]
 [ 0.14232255  2.93331428  0.88511785]] 
 b1 = a1=
 [[10.         10.         10.        ]
 [ 0.14232255  2.93331428  0.88511785]] 
 c1 = a1.copy()=
 [[ 1.48618757 -0.90409826  2.05529475]
 [ 0.14232255  2.93331428  0.88511785]] 
 d1 = copy.deepcopy(a1)=
 [[ 1.48618757 -0.90409826  2.05529475]
 [ 0.14232255  2.93331428  0.88511785]] 

  3、pytorch中的浅拷贝和深拷贝

a2 = torch.randn(2, 3)
b2 = torch.Tensor(a2)
bb2 = torch.tensor(a2)
c2 = a2.detach()
cc2 = a2.clone()
ccc2 = a2.clone().detach()
print('before modify\r\n a2=\r\n', a2, '\r\n','b2 = torch.Tensor(a2)=\r\n', b2, '\r\n','bb2 = torch.tensor(a2)=\r\n', bb2, '\r\n','c2 = a2.detach()=\r\n', c2, '\r\n','cc2 = a2.clone()=\r\n', cc2, '\r\n','ccc2 = a2.clone().detach()=\r\n', ccc2)
a2[0] = 0
print('after modify\r\n a2=\r\n', a2, '\r\n','b2 = torch.Tensor(a2)=\r\n', b2, '\r\n','bb2 = torch.tensor(a2)=\r\n', bb2, '\r\n','c2 = a2.detach()=\r\n', c2, '\r\n','cc2 = a2.clone()=\r\n', cc2, '\r\n','ccc2 = a2.clone().detach()=\r\n', ccc2)

before modify
 a2=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 b2 = torch.Tensor(a2)=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 bb2 = torch.tensor(a2)=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 c2 = a2.detach()=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 cc2 = a2.clone()=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 ccc2 = a2.clone().detach()=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]])
after modify
 a2=
 tensor([[ 0.0000,  0.0000,  0.0000],
        [ 0.8979, -0.4158,  1.1338]]) 
 b2 = torch.Tensor(a2)=
 tensor([[ 0.0000,  0.0000,  0.0000],
        [ 0.8979, -0.4158,  1.1338]]) 
 bb2 = torch.tensor(a2)=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 c2 = a2.detach()=
 tensor([[ 0.0000,  0.0000,  0.0000],
        [ 0.8979, -0.4158,  1.1338]]) 
 cc2 = a2.clone()=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]]) 
 ccc2 = a2.clone().detach()=
 tensor([[-0.6472,  1.3437, -0.3386],
        [ 0.8979, -0.4158,  1.1338]])

 参考

1、B站视频

十分钟!彻底弄懂Python深拷贝与浅拷贝机制_哔哩哔哩_bilibili

11、简书

NumPy之浅拷贝和深拷贝 - 简书 (jianshu.com)

2、CSDN-numpy

 numpy copy(无拷贝 浅拷贝、深拷贝)类型说明_genghaihua的博客-CSDN博客

3、CSDN-pytorch

python、pytorch中的常见的浅拷贝、深拷贝问题总结_pytorch tensor的浅、复制_新嬉皮士的博客-CSDN博客

完整代码

import numpy as np
import copy
import torcha = [1, 2, 3, 4, [11, 22, 33, [111, 222]]]
b = a
c = a.copy()
d = copy.deepcopy(a)print('before modify\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')a[0] = 10
print('after a[0] = 10\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')a[4][0] = 100
print('after a[4][0] = 100\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')a[4][3][0] = 1000
print('after a[4][3][0] = 1000\r\n a=\r\n', a, '\r\n','b = a=\r\n', b, '\r\n','c = a.copy()=\r\n', c, '\r\n','d = copy.deepcopy(a)\r\n', d, '\r\n')a1 = np.random.randn(2, 3)
b1 = a1
c1 = a1.copy()
d1 = copy.deepcopy(a1)print('before modify\r\n a1=\r\n', a1, '\r\n','b1 = a1=\r\n', b1, '\r\n','c1 = a1.copy()=\r\n', c1, '\r\n','d1 = copy.deepcopy(a1)=\r\n', d1, '\r\n')a1[0] = 10
print('after a1[0] = 10\r\n a1=\r\n', a1, '\r\n','b1 = a1=\r\n', b1, '\r\n','c1 = a1.copy()=\r\n', c1, '\r\n','d1 = copy.deepcopy(a1)=\r\n', d1, '\r\n')a2 = torch.randn(2, 3)
b2 = torch.Tensor(a2)
bb2 = torch.tensor(a2)
c2 = a2.detach()
cc2 = a2.clone()
ccc2 = a2.clone().detach()
print('before modify\r\n a2=\r\n', a2, '\r\n','b2 = torch.Tensor(a2)=\r\n', b2, '\r\n','bb2 = torch.tensor(a2)=\r\n', bb2, '\r\n','c2 = a2.detach()=\r\n', c2, '\r\n','cc2 = a2.clone()=\r\n', cc2, '\r\n','ccc2 = a2.clone().detach()=\r\n', ccc2)
a2[0] = 0
print('after a2[0] = 0\r\n a2=\r\n', a2, '\r\n','b2 = torch.Tensor(a2)=\r\n', b2, '\r\n','bb2 = torch.tensor(a2)=\r\n', bb2, '\r\n','c2 = a2.detach()=\r\n', c2, '\r\n','cc2 = a2.clone()=\r\n', cc2, '\r\n','ccc2 = a2.clone().detach()=\r\n', ccc2)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/44617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 内置终端字体间距问题

debian 12 从英文切换到中文出现的问题,需要安装 fonts-wqy-microhei ## 其他 linux 切换中文_xiaguangbo的博客-CSDN博客

知识储备--基础算法篇-排序算法

1.知识--时间复杂度和空间复杂度 1.2时间复杂度 一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。 1.3空间复杂度 空间复杂度不是程序占用了多少bytes的空间,空间复杂度算的是变量的个…

【C语言基础】宏定义的用法详解

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

angular中如何定义一个全局组件?

需求,我们需要新建一个navBreadcrumb的全局组件。这是一个面包屑导航,在不同的页面引入时传入一个路由数组即可。 第一步:我们新建这个组件: ng g c navBreadcrumb ng g m navBreadcrumb----------nav-breadcrumb.module-------…

vue中 .env .env.development .env.production 详细说明

1.配置文件有: .env 全局默认配置文件,不论什么环境都会加载合并 .env.development 开发环境下的配置文件 .env.production 生产环境下的配置文件 2.命名规则: 属性名必须以VUE_APP_开头,比如VUE_APP_XXX 3.关于文件的加载&#x…

【BASH】回顾与知识点梳理(三十一)

【BASH】回顾与知识点梳理 三十一 三十一. 进程的管理31.1 给进程发送讯号kill -signal PIDlinux系统后台常驻进程killall -signal 指令名称 31.2 关于进程的执行顺序Priority 与 Nice 值nice :新执行的指令即给予新的 nice 值renice :已存在进程的 nice…

php+tcpdf生成pdf:中文乱码

亲测成功,感谢分享! 查看原文 TCPDF是一个生成PDF的不错的库,可惜,官方对包括中文在内的东亚字体支持不怎么样的。 场景:某项目需要根据数据库信息生成pdf格式的发票,考虑采用稳定的tcpdf,虽然…

uniapp的uview-plus组件库的导入

uniapp的vue3中使用uview-plus组件库。在插件市场中找到该组件并点击如下所示绿色按钮,弹出弹窗选择要导入的项目后,就会在uni_modules文件中生成如下文件内容 关于插件的下载区别,可参考:https://uniapp.dcloud.net.cn/compone…

信号

信号也是IPC中的一种,是和管道,消息队列,共享内存并列的概念。 本文参考: Linux中的信号_linux中信号_wolf鬼刀的博客-CSDN博客 Linux系统编程(信号处理 sigacation函数和sigqueue函数 )_花落已飘的博客-CSDN博客 Linu…

常用curl参数及样例讲解

1 缘起 后端/后台项目开发过程中,有两个阶段的接口测试和验证,自测阶段,通过Postman构建请求, 自建一些参数,测试功能以及边界条件,这些都是可以自行掌控的,当完成功能验证与前端对接时&#x…

进入微服务阶段后的学习方法

微服务SpringCloud学习的特点 陌生,多,复杂。 技术陌生,技术栈多,实现复杂。 学习方式 对于每一个组件: 1.知道是什么、有什么用 2.知道操作步骤(跟着讲义操作即可),包括&#…

Ubuntu系统安装指定版本内核

Git仓库 使用Ubuntu系统工具升级指定版本的内核 https://github.com/pimlie/ubuntu-mainline-kernel.sh下载 wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh授权,移动到系统bin目录 chmod x ubunt…

19万字智慧城市总体规划与设计方案WORD

导读:原文《19万字智慧城市总体规划与设计方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 感知基础设施 感知基础设施架构由感知范围、感知手…

正演的数值模拟(零基础,学习中)

摘要: 本贴从零开始学习正演的数值模拟方法. 1. 偏微分基础 引例: 物体从一维坐标的原点开始移动, 在 t t t 时刻, 它在坐标轴的位置由函数 s ( t ) s(t) s(t) 确定, 则速度为位置变化量与时间的比值: v ( t ) d s ( t ) d t lim ⁡ Δ t → 0 s ( t Δ t ) − s ( t )…

驱动开发点亮led灯

头文件 #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED_MODER 0X50006000 #define PHY_LED_ODR 0X50006014 #define PHY_LED_RCC 0X50000A28 #define PHY_LED_FMODER 0X50007000 #define PHY_LED_FODR 0X50007014#endif驱动代码 #include <linux/init.h> #incl…

19-普通组件的注册使用

普通组件的注册使用-局部注册 一. 组件注册的两种方式:1.局部注册:只能在注册的组件内使用 (1) 创建 vue 文件(单文件组件) (2) 在使用的组件内导入,并注册 components:{ 组件名: 组件对象 } // 导入需要注册的组件 import 组件对象 from.vue文件路径 import HmHeader from ./…

.net 6 使用 NEST 查询,时间字段传值踩坑

0x01业务描述 说明: 同事搭建的业务系统,最开始使用 log4net 记录到本地日志. 然后多个项目为了日志统一,全部记录在 Elasticsearch ,使用 log4net.ElasticSearchAppender.DotNetCore. 然后搭建了 Kibanal 对 Elasticsearch 进行查询. 但是项目组开发人员众多,不是每个人…

使用 HTML、CSS 和 JavaScript 创建实时 Web 编辑器

使用 HTML、CSS 和 JavaScript 创建实时 Web 编辑器 在本文中&#xff0c;我们将创建一个实时网页编辑器。这是一个 Web 应用程序&#xff0c;允许我们在网页上编写 HTML、CSS 和 JavaScript 代码并实时查看结果。这是学习 Web 开发和测试代码片段的绝佳工具。我们将使用ifram…

Redis 工作总结

1.Redis是什么 Redis是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是Remote Dictionary Service的首字母缩写&#xff0c;也就是远程字典服务。 2.Redis的用途&#xff1f; 2.1 计数器 2.2 缓存 2.3 分布式锁 2.4 消息中间件 3.Redis的数据类型 3.1 string&am…

如何找到一个数的所有质因数,以及如何快速判断一个数是不是质数

前情介绍 今天遇到一个需求&#xff1a;找到一个数所有的质因数。 初步解决 先定义一个判断质数的函数&#xff1a; def is_Prime(number):i 2count 0while i < number:if number % i 0 :count 1i 1if count > 0:return Falseelse:return True 接着定义一个寻找质…