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)
相关文章:
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…...
EasyRecovery14数据恢复软件支持各类存储设备的数据恢复
EasyRecovery14数据恢复软件专业数据恢复软件支持电脑、相机、移动硬盘、U盘、SD卡、内存卡、光盘、本地电子邮件和 RAID 磁盘阵列等各类存储设备的数据恢复。 目前市面上有许多数据恢复软件,但褒贬不一,而且数据恢复软件又不是一款会被经常使用的软件&a…...
玩机搞机----面具模块的组成 制作模块
root面具相信很多玩家都不陌生。早期玩友大都使用第三方卡刷补丁来对系统进行各种修复和添加功能。目前面具补丁代替了这些操作。今天的帖子了解下面具各种模块的组成和几种普遍的代码组成。 Magisk中运行的每个单独的shell脚本都将在内部的BusyBox的shell中执行。对于与第三方…...
注册中心/配置管理 —— SpringCloud Consul
Consul 概述 Consul 是一个可以提供服务发现,健康检查,多数据中心,key/Value 存储的分布式服务框架,用于实现分布式系统的发现与配置。Cousul 使用 Go 语言实现,因此天然具有可移植性,安装包仅包含一个可执…...
Next.js 13 你需要了解的 8 件事
目录 React 服务器组件 (RSC)服务器组件默认开启在 Next.js 中客户端组件也在服务器上呈现!组成客户端和服务器组件编译Next.js 13 渲染模式桶文件有点坏了库集成:WIP 仍在进行中Route groups 路由组总结 在本文中,我们…...
计数排序(Count Sort)算法详解
1. 算法简介 计数排序(Count Sort)是一种非比较排序算法,其核心思想是统计数组中每个元素出现的次数,然后根据统计结果将元素按照顺序放回原数组中。计数排序的时间复杂度为O(nk),其中n是数组的长度,k是数…...
Linux驱动开发(Day3)
驱动点灯:...
使用Vscode调试shell脚本
在vcode中安装bash dug插件 在vcode中添加launch.json配置,默认就好 参考:http://www.rply.cn/news/73966.html 推荐插件: shellman(支持shell,智能提示) shellcheck(shell语法检查) shell-format(shell格式化)...
OpenAI Function calling
开篇 原文出处 最近 OpenAI 在 6 月 13 号发布了新 feature,主要针对模型进行了优化,提供了 function calling 的功能,该 feature 对于很多集成 OpenAI 的应用来说绝对是一个“神器”。 Prompt 的演进 如果初看 OpenAI 官网对function ca…...
【C语言】字符分类函数、字符转换函数、内存函数
前言 之前我们用两篇文章介绍了strlen、strcpy、stract、strcmp、strncpy、strncat、strncmp、strstr、strtok、streeror这些函数 第一篇文章strlen、strcpy、stract 第二篇文章strcmp、strncpy、strncat、strncmp 第三篇文章strstr、strtok、streeror 今天我们就来学习字…...
Deep Learning With Pytorch - 最基本的感知机、贯序模型/分类、拟合
文章目录 如何利用pytorch创建一个简单的网络模型?Step1. 感知机,多层感知机(MLP)的基本结构Step2. 超平面 ω T ⋅ x b 0 \omega^{T}xb0 ωT⋅xb0 or ω T ⋅ x b \omega^{T}xb ωT⋅xb感知机函数 Step3. 利用感知机进行决策…...
测试工具coverage的高阶使用
在文章Python之单元测试使用的一点心得中,笔者介绍了自己在使用Python测试工具coverge的一点心得,包括: 使用coverage模块计算代码测试覆盖率使用coverage api计算代码测试覆盖率coverage配置文件的使用coverage badge的生成 本文在此基础上…...
安卓监听端口接收消息
文章目录 其他文章监听端口接收消息 建立新线程完整代码 其他文章 下面是我的另一篇文章,是在电脑上发送数据,配合本篇文章,可以实现电脑与手机的局域网通讯。直接复制粘贴就能行,非常滴好用。 点击连接 另外,如果你不…...
「Node」下载安装配置node.js
以下是Node.js的下载、安装和配置的全面教程: 下载 Node.js 打开 Node.js 官方网站:Previous Releases在主页上,您会看到两个版本可供选择:LTS(长期支持版本)和最新版(Current)。如…...
NOIP2014普及组,提高组 比例简化 飞扬的小鸟 答案
比例简化 说明 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为1498:902。 不过,如果把调查结果就以这种…...
【Java】使用Apache POI识别PPT中的图片和文字,以及对应的大小、坐标、颜色、字体等
本文介绍如何使用Apache POI识别PPT中的图片和文字,获取图片的数据、大小、尺寸、坐标,以及获取文字的字体、大小、颜色、坐标。 官方文档:https://poi.apache.org/components/slideshow/xslf-cookbook.html 官方文档和网上的资料介绍的很少…...
根据源码,模拟实现 RabbitMQ - 实现消息持久化,统一硬盘操作(3)
目录 一、实现消息持久化 1.1、消息的存储设定 1.1.1、存储方式 1.1.2、存储格式约定 1.1.3、queue_data.txt 文件内容 1.1.4、queue_stat.txt 文件内容 1.2、实现 MessageFileManager 类 1.2.1、设计目录结构和文件格式 1.2.2、实现消息的写入 1.2.3、实现消息的删除…...
找到所有数组中消失的数(C语言详解)
题目:找到所有数组中消失的数 题目详情: 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1,n] 内。请你找出所以在 [1,n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例1: 输入…...
计算机毕设项目之基于django+mysql的疫情实时监控大屏系统(前后全分离)
系统阐述的是一款新冠肺炎疫情实时监控系统的设计与实现,对于Python、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计,描述,实现和分析与测试方面来表明开发的过程。开发中使用了 django框架和MySql数据库技术搭建系统的整体…...
Unity UI内存泄漏优化
项目一运行,占用的内存越来越多,不会释放,导致GC越来越频繁,越来越慢,这些都是为什么呢,今天从UI方面谈起。 首先让我们来聊聊什么是内存泄漏呢? 一般来讲内存泄漏就是指我们的应用向内存申请…...
【Cornerstone3D实战】从零构建医学影像三视图渲染器:Dicom文件加载与多平面重建
1. 医学影像三视图渲染器入门指南 第一次接触医学影像开发的朋友可能会被"Dicom"、"三视图重建"这些专业术语吓到。其实用现代Web技术实现一个基础的医学影像查看器,比你想象中简单得多。Cornerstone3D这个开源库就像医学影像界的jQuery&#x…...
Kandinsky-5.0-I2V-Lite-5s镜像免配置优势:内置VAE/CLIP/Qwen2.5-VL,开箱即用
Kandinsky-5.0-I2V-Lite-5s镜像免配置优势:内置VAE/CLIP/Qwen2.5-VL,开箱即用 1. 产品概述 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型,专为快速视频创作设计。只需上传一张首帧图片,再补充一句运动或镜头描述…...
Fay开源数字人框架:终极多语言翻译与全球化应用指南 [特殊字符]
Fay开源数字人框架:终极多语言翻译与全球化应用指南 🌍 【免费下载链接】Fay fay是一个帮助数字人(2.5d、3d、移动、pc、网页)或大语言模型(openai兼容、deepseek)连通业务系统的agent框架。 项目地址: h…...
革命性本地AI聊天应用ChatRTX:基于TensorRT-LLM和RAG的完整指南
革命性本地AI聊天应用ChatRTX:基于TensorRT-LLM和RAG的完整指南 【免费下载链接】trt-llm-rag-windows 项目地址: https://gitcode.com/gh_mirrors/tr/trt-llm-rag-windows ChatRTX是一款革命性的本地AI聊天应用程序,它基于NVIDIA的TensorRT-LLM…...
Java POI读取大文件慢如何优化
用java poi处理大型excel文件时,往往会遇到阅读速度慢的问题,严重影响程序性能。本文将针对“java poi打开大文件的慢优化方法?”这个问题讨论了几个可行的解决方案,以帮助开发者提高程序效率。问题在于java poi 默认情况下&#…...
5B00,5B01,5B02,1700,1701,1702,1704,P07清零软件G3800,TS3480 ,TS3380 ,G3000,G1810,TS9020, TS8020,TS3480
下载地址:链接:https://pan.baidu.com/s/1j7Nwv715wX1JL3qidnGyXA?pwd0000 提取码:0000 常见 佳能打印机 型号: G5080 G6080 G7080 G1810 G2810 G3810 G4810 G1800 G2800 G3800 G4800 G5010 G6010 G7010 G1010 G2010 G3010 G4010 G1000 G2000 G3000 G40…...
双目立体视觉实战:从平行视图到3D电影原理的完整解析
双目立体视觉实战:从平行视图到3D电影原理的完整解析 你是否曾在电影院戴上3D眼镜,被扑面而来的立体效果震撼?这种身临其境的视觉体验,其核心技术正是源于双目立体视觉原理。本文将带你深入探索从平行视图构建到3D电影实现的完整技…...
解锁Nvidia Tesla A100完整性能:从驱动安装到Fabric Manager服务配置
1. 为什么你的Tesla A100性能被锁住了? 很多朋友第一次拿到Tesla A100显卡时,都会遇到一个奇怪的现象:明明按照常规方法安装了驱动,nvidia-smi也能正常显示显卡信息,但实际跑深度学习训练或者高性能计算任务时…...
开源密码测试工具ArchivePasswordTestTool:从加密困境到文件解锁的完整方案
开源密码测试工具ArchivePasswordTestTool:从加密困境到文件解锁的完整方案 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 问题…...
DriveVLA-W0:世界模型在自动驾驶中放大数据规模定律【在动作信号的基础上增加视觉自监督信号可增强VLA效果(扩散世界模型、自回归世界模型效果都不错,图4显示扩散策略稍好一些)】
第001/22页(英文原文) DRIVEVLA-W0: WORLD MODELS AMPLIFY DATA SCALING LAW IN AUTONOMOUS DRIVING Yingyan Li1∗ Shuyao Shang1∗ Weisong Liu1∗ Bing Zhan1∗ Haochen Wang1∗ Yuqi Wang1 Yuntao Chen1 Xiaoman Wang2 Yasong An2 Chufeng Tang2 Lu Hou2 Lue Fan1B Zh…...



