numpy的数组深度叠加dstack详解

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython

一、引言

numpy的dstack函数用于沿着第三个维度(深度)将数组堆叠起来。它将多个数组按照深度方向进行堆叠,生成一个新的数组。具体来说,dstack函数会将输入的多个数组在第三个维度上进行拼接,即将每个数组的对应位置的元素组合成一个新的元素。

在这里插入图片描述

初学者在学习使用这个函数时,可能会有一些疑惑?所谓第三个维度是什么呢?假设对于一个数组a[n0,…,nx],当x大于等于2时,可以理解第三个维度为n2对应的维度,那怎么对x=1的二维数组也能堆叠呢?

二、数组的dstack堆叠测试

为了弄懂这个问题,老猿写了个测试程序,分别对一维、二维、三维、四维数组使用dstack进行测试,测试代码如下:

import numpy as npa1 = np.array(range(36))
a2 = a1.reshape((9,4))
a3 = a1.reshape((3,3,4))
a4 = a1.reshape((3,3,2,2))l1 = np.array([a1,a2,a3,a4])
l2 = l1+100index = 0
for a,b in zip(l1,l2):c = np.dstack((a,b))print(f"\n****a{index}.shape={a.shape},a{index}:\n",a)print(f"\n****c{index}.shape={c.shape},c{index}:\n",c)index+=1

这个程序先创建一个 36个元素的一维数组,其值为0-35,然后用其为基础创建了2、3、4维的数组,将这些数组作为元素保存到一个l1的数组中好方便处理,然后将l1中每个数组的元素值加100保存到数组l2中,由于l1的所有数组最终维度的元素值为0-36,而l2的为100-136,这样就能方便识别最终输出数组的元素是来着那个数组。

程序输出如下:

****a0.shape=(36,),a0:[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 2324 25 26 27 28 29 30 31 32 33 34 35]****c0.shape=(1, 36, 2),c0:[[[  0 100][  1 101][  2 102][  3 103][  4 104][  5 105][  6 106][  7 107][  8 108][  9 109][ 10 110][ 11 111][ 12 112][ 13 113][ 14 114][ 15 115][ 16 116][ 17 117][ 18 118][ 19 119][ 20 120][ 21 121][ 22 122][ 23 123][ 24 124][ 25 125][ 26 126][ 27 127][ 28 128][ 29 129][ 30 130][ 31 131][ 32 132][ 33 133][ 34 134][ 35 135]]]****a1.shape=(9, 4),a1:[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11][12 13 14 15][16 17 18 19][20 21 22 23][24 25 26 27][28 29 30 31][32 33 34 35]]****c1.shape=(9, 4, 2),c1:[[[  0 100][  1 101][  2 102][  3 103]][[  4 104][  5 105][  6 106][  7 107]][[  8 108][  9 109][ 10 110][ 11 111]][[ 12 112][ 13 113][ 14 114][ 15 115]][[ 16 116][ 17 117][ 18 118][ 19 119]][[ 20 120][ 21 121][ 22 122][ 23 123]][[ 24 124][ 25 125][ 26 126][ 27 127]][[ 28 128][ 29 129][ 30 130][ 31 131]][[ 32 132][ 33 133][ 34 134][ 35 135]]]****a2.shape=(3, 3, 4),a2:[[[ 0  1  2  3][ 4  5  6  7][ 8  9 10 11]][[12 13 14 15][16 17 18 19][20 21 22 23]][[24 25 26 27][28 29 30 31][32 33 34 35]]]****c2.shape=(3, 3, 8),c2:[[[  0   1   2   3 100 101 102 103][  4   5   6   7 104 105 106 107][  8   9  10  11 108 109 110 111]][[ 12  13  14  15 112 113 114 115][ 16  17  18  19 116 117 118 119][ 20  21  22  23 120 121 122 123]][[ 24  25  26  27 124 125 126 127][ 28  29  30  31 128 129 130 131][ 32  33  34  35 132 133 134 135]]]****a3.shape=(3, 3, 2, 2),a3:[[[[ 0  1][ 2  3]][[ 4  5][ 6  7]][[ 8  9][10 11]]][[[12 13][14 15]][[16 17][18 19]][[20 21][22 23]]][[[24 25][26 27]][[28 29][30 31]][[32 33][34 35]]]]****c3.shape=(3, 3, 4, 2),c3:[[[[  0   1][  2   3][100 101][102 103]][[  4   5][  6   7][104 105][106 107]][[  8   9][ 10  11][108 109][110 111]]][[[ 12  13][ 14  15][112 113][114 115]][[ 16  17][ 18  19][116 117][118 119]][[ 20  21][ 22  23][120 121][122 123]]][[[ 24  25][ 26  27][124 125][126 127]][[ 28  29][ 30  31][128 129][130 131]][[ 32  33][ 34  35][132 133][134 135]]]]

三、结论

从上面的程序和输出来看,dstack在进行数组堆叠时有如下结论:

  1. 不但能堆叠三维以上数组,而且能堆叠一维和二维数组;
  2. 对三维以上数组堆叠时,结果数组的维度数保持不变;三维以上数组堆叠时,取两个参与堆叠数组的第三个维度的元素进行堆叠(元素合并)处理,堆叠后第三个维度的元素为参与堆叠的两个数组第三个维度的合并,因此个数翻倍,其他维度保持不变;
  3. 对二维数组堆叠时,堆叠结果为三维数组,前面两个维度大小就是参与堆叠的两个数组的维度大小,最后一个维度大小固定为2; 二维数组堆叠时,堆叠结果的第三个维度的元素为参与堆叠的两个数组第二个维度的元素按顺序逐一各取一个构成数组作为结果数组第三个维度对应位置的元素;
  4. 对一维数组堆叠时,堆叠结果为三维数组,第一个维度大小就是参与堆叠的两个数组的维度大小,第二个维度的大小固定为1,最后一个维度大小固定为2;一维数组堆叠时,堆叠结果的第三个维度的元素为参与堆叠的两个数组的元素按顺序逐一各取一个构成数组作为结果数组第三个维度对应位置的元素。

如果诸君对以上描述存在疑问,请结合上面的案例进行对比验证。

如对文章内容存在疑问或需要相关资料,可在博客评论区留言,或关注:老猿Python 微信公号发消息咨询,可通过扫二维码加微信公众号。

写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

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

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

相关文章

docker部署开源多功能监控系统

HertzBeat 是一个无需 Agent、高性能、易扩展、功能强大的开源实时监控告警系统,无需 Agent、高性能、易扩展、功能强大,由 Dromara 团队开发并开源,能够帮我们轻松监控应用、服务、基础设施等各种资源的运行状况 部署 docker run -d -p 11…

腾讯云服务器按月收费价格表,优惠价格5元一个月起

2024腾讯云服务器多少钱一个月?5元1个月起,腾讯云轻量服务器4核16G12M带宽32元1个月、96元3个月,8核32G22M配置115元一个月、345元3个月,腾讯云轻量应用服务器61元一年折合5元一个月、4核8G12M配置646元15个月、2核4G5M服务器165元…

01 JDBC介绍

文章目录 JDBC本质版本使用核心APIDriverDriverManager驱动注册连接对象获取 Connection获取执行对象事务管理 Statement概述 ResultSet概述 JDBC本质 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口各个数据库厂商去实现这套接…

【Week Y2】使用自己的数据集训练YOLO-v5s

Y2-使用自己的数据集训练YOLO-v5s 零、遇到的问题汇总(1)遇到git的import error(2)Error:Dataset not found(3)Error:删除中文后,训练图片路径不存在 一、.xml文件里保存…

框架篇常见面试题

1、Spring框架的单例bean是线程安全的吗? 2、什么是AOP? 3、Spring的事务是如何实现的? 4、Spring事务失效的场景 5、SpringBean的声明周期 6、Spring的循环依赖 7、SpringMVC的执行流程 8、SpringBoot自动配置原理 9、Spring常见注解

Java中的实用类讲解(中篇)

如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm1000.2115.3001.5343 使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法,看完代码自己敲…

AV1:帧内预测(一)

​VP9支持10种帧内预测模式,包括8种角度模式和非角度模式DC、TM(True Motion)模式,AV1在其基础上进一步扩展,AV1帧内预测角度模式更细化,同时新增了部分非角度模式。 扩展的角度模式 AV1在VP9角度模式的基础上进一步扩展&#xf…

CSharp的lambda表达式匿名类扩展方法

c#的lamba表达式 之前已经写过一些关于委托还有事件的文章,今天就来介绍一下lambda表达式。 首先定义需要的函数以及委托 { public delegate void DoNothingDelegate(); public delegate void StudyDelegate(int id, string name);private void DoNothing() {Cons…

蓝桥杯--完全二叉树

import java.util.Scanner;import static java.lang.Math.log;public class top9 {//求树的每一层的和public static void main(String [] args){Scanner scannernew Scanner(System.in);int nscanner.nextInt();int [] arrnew int[n];for(int i0;i<n;i){arr[i]scanner.next…

Android Studio实现内容丰富的安卓志愿者平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号122 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查看岗位 4.浏览新闻&#xff0c; 5.个人中心…

1、Java虚拟机学习-类的生命周期-加载阶段-以及怎样查看方法区中的对象和堆中对象的关联以及静态变量存在什么地方

类的生命周期 其中连接又可以分为3个小阶段 一、加载阶段 1、加载阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 渠道: 2、类加载器在加载完类之后&#xff0c;Java虚拟机会将字节码中的信息保存在内存的方法区中。 方法区是虚拟…

使用Vscode连接云进行前端开发

使用Vscode连接云进行前端开发 1、ssh连接腾讯云 本人使用的是腾讯云。 然后vscode,用最新版&#xff0c;插件选择remote ssh&#xff0c;或者remote xxx下载过来。 然后点击远程资源管理器&#xff0c;选择SSH通道 然后输入命令如下。 ssh rootip然后输入密码 腾讯云应该…

Source Insight使用-添加新的文件类型

目录 遇到的问题解决方法结果 遇到的问题 在Source Insight中我们通常查看.c和.h文件&#xff0c;当使用其查看.java 或者.hal等类型文件时&#xff0c;发现找不到 解决方法 以添加.hal文件为例: 选择Options 下面的File Type Options… 选项。 点击左侧的 “C/C Source F…

哈尔滨工业大学 《材料物理》 笔记-3

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; 量…

YOLOv9改进策略:卷积魔改 | 分布移位卷积(DSConv),提高卷积层的内存效率和速度

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文改进内容&#xff1a; YOLOv9如何魔改卷积进一步提升检测精度&#xff1f;提出了一种卷积的变体&#xff0c;称为DSConv&#xff08;分布偏移卷积&#xff09;&#xff0c;其可以容易地替换进标准神经网络体系结构并且实现较低的存…

针对BSV区块链新推出的网络访问规则NAR和警报系统AS的解释与问答

​​发表时间&#xff1a;2024年2月22日 BSV区块链社区团队最近开设了一个Twitter&#xff08;X&#xff09;话题空间&#xff0c;讨论BSV区块链协会最新推出的网络访问规则和警报系统的相关问题。 本次讨论由BSV区块链社区负责人Brett Banfe主持&#xff0c;以便社区成员更好…

vivado 物理优化约束、交互式物理优化

物理优化约束 Vivado Design Suite在物理优化过程中尊重DONT_TOUCH特性。它不在具有这些属性的网络或小区上执行物理优化。要加快网络选择过程中&#xff0c;具有DONT_TOUCH属性的网络经过预过滤&#xff0c;不被考虑用于物理优化。此外&#xff0c;还遵守Pblock分配&#xff…

母亲的奶牛(bfs)

农夫约翰有三个容量分别为 A , B , C A,B,C A,B,C 升的挤奶桶。 最开始桶 A A A 和桶 B B B 都是空的&#xff0c;而桶 C C C 里装满了牛奶。 有时&#xff0c;约翰会将牛奶从一个桶倒到另一个桶中&#xff0c;直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。 这一过…

Linux常用命令之搜索查找类

1.1find查找文件或目录 1&#xff09;基本语法 find [搜索范围] [ 选项] find -name&#xff1a;按照名字查找 find -user&#xff1a;按用户相关查找 find -size&#xff1a;按照文件大小查找 1.2locate快速定位文件路径 经验技巧&#xff1a;由于locate指令基于数据库进行…

HP Pavilion Laptop 15-eg2xxx原厂Win11系统预装oem系统包

惠普星15青春版笔记本原装出厂Windows11系统镜像下载&#xff0c;恢复出厂开箱状态 链接&#xff1a;https://pan.baidu.com/s/1f4hjwWX0CMDykb_8YXSf-w?pwd0aja 提取码&#xff1a;0aja 适用型号&#xff1a; 15-eg0010TU、15-eg0011TU、15-eg0008TX、15-eg0009TX 15-eg…