【Python】[…,0,0]和[:,0,0]是什么意思呢
在看pytorch代码时经常会看见[…,0,0]
和[:,0,0]
两种形式,但是他们代表什么呢?
下面举个例子来讲:
随机生成shape为[2,3,2,2]的数组,姑且看成2个batch,每个batch有3个通道,每个通道大小2*2。
1、[:]
的含义
例1:
输出是原数组:
第一个结果:所有batch中,第0个通道中所有元素。
第二个结果:所有batch中,第0个通道,第1行的所有元素。
例2:
第一个结果:第0个batch中,所有通道的所有元素。
第二个结果:所有batch中,所有通道中,第1行的所有元素。
**结论:**结合例1和例2可以看出来,:
可以代表的是某一个、单个维度所有的元素,查找元素与数组访问一致,从前往后查,后面无参数默认所有元素。
2、[...]
的含义
例3:
输出是原数组:
第一个结果:所有batch中,所有通道中,所有行中,第0列的元素,同一通道中的元素组成一行。
第一个结果:所有batch中,所有通道中,所有行中,第1列的元素,同一通道中的元素组成一行。
例4:
输出是原数组:
第一个结果:所有batch中,所有通道中,第0行,第1列的元素。
第二个结果:所有batch中,所有通道中,第1行,第1列的元素。
例5:
输出是原数组:
**结论:**结合例3、4、5可以看出来,...
可以代表多个、不同维度的元素,查找元素顺序可以看作从后向前找。
3、[...]
与[:]
等价关系
如果没有太明白没关系,看下面这个例子更为直观:
例6:
可以看出来...
与:
是可以相互等价的:
上图第一个为例,[...,0]
与[:,:,:,0]
,一个...
可以代表三个:
,同理,第二个[...,0,0]
与[:,:,0,0]
,一个...
可以代表两个:
,所以说[...]
代表了前面所有纬度的数据,而[:]
只是代表一个纬度的数据。
另外,在另一个博主的博客中提到:
the x[…] = … modifies x in-place;
It’s like x[:] = … but works with arrays of any dimension (including 0d). In this context x isn’t just a number, it’s an array.
Slicing: Important use of Ellipsis (…) is in slicing higher-dimensional data structures.
在引用高维数组时,使用[...]
比[:]
引用更方便,确实如此。
4、Tips
Tip 1:
[...]
只能在使用引用的时候出现一次,以下都是不可行的:
在这里是创建了一个高维数组:a = np.random.rand(3,3,3,3,3,3)
可以看到报错信息是IndexError: an index can only have a single ellipsis ('...')
,意思是你只能有一个省略号。
Tip 2:
当然[...]
与[:]
是可以混合使用的,没有先后顺序:
5、总结
简单来讲:
一个[:]
单纯的代表一个维度,在使用低维数组的时候使用比较灵活,查找元素从前向后;
一个[...]
代表多个维度,多个维度指的是连续的维度,在使用高维数组的时候比较灵活,查找元素从后向前;
一个[...]
相当于连续的多个[:]
使用,但是一个[...]
只能在一次引用当中使用一次;
[...]
可以与多个[:]
在引用中混合使用;
参考博客:
多个维度指的是连续的维度,在使用高维数组的时候比较灵活,查找元素从后向前;
一个[...]
相当于连续的多个[:]
使用,但是一个[...]
只能在一次引用当中使用一次;
[...]
可以与多个[:]
在引用中混合使用;
参考博客:
python numpy 里面的[:, None]是个什么鬼?[…, None]呢?
【Python】[…,0,0]和[:,0,0]是什么意思呢相关推荐
- Python之NumPy(axis=0 与axis=1)区分
Python之NumPy(axis=0 与axis=1)区分 转载于:https://www.cnblogs.com/greatljg/p/10802392.html
- wxpython图形_wxPython(Python的GUI图形库)v3.0.2.0免费版-独木成林
wxPython(Python的GUI图形库) v3.0.2.0免费版 wxPython2.8-win32-ansi-py27 对应于32位 python 2.7版本. 简单例子: #!/usr/bi ...
- python chm模块_python3.7.0官方参考文档 最新api文档 chm
python 3.7.0 帮助文档,Python 3.7.0 documentation python3.7.0原版官方文档 英文版,CHM格式.修正显示乱码.基于官方在线文档修正编译. 简单方便的c ...
- mae python实现_使用Python进行机器学习:从0到1,构建回归模型(附完整教程)
摘要 在本文中,我将使用数据科学和Python来解释回归用例的主要步骤,从数据分析到理解模型输出. 我将介绍一些非常有用的Python代码,当你遇到相同的情况时,只需要复制,粘贴,运行,就能轻松使用. ...
- 微信跳一跳python自动代码解读1.0
微信跳一跳 那个跳一跳python"外挂",有几个python文件,其中有一个是得到截图,然后鼠标在图片上点击两次,python窗口上会打印两次鼠标的位置,并且会跟上一行这两个点之 ...
- python打地鼠游戏代码_Python 0基础开发游戏:打地鼠(详细教程)VS code版本
如果你没有任何编程经验,而且想尝试一下学习编程开发,这个系列教程一定适合你,它将带你学习最基本的Python语法,并让你掌握小游戏的开发技巧.你所需要的,就是付出一些时间和耐心来尝试这些代码和操作.文 ...
- 买《Python数据分析师:从0基础到数据分析达人》专题视频课程送纸质图书
<Python从小白到大牛>纸质图书于2018年10月上市,为了答谢广大学员对智捷课堂以及关老师的支持,现购买51CTO学院([Python数据分析师:从0基础到数据分析达人](https ...
- 从0.1加0.2不等于0.3谈Python浮点数的前世今生
文章目录 1. 0.1加0.2不等于0.3? 2. 为什么要使用浮点数? 3. 浮点数的二进制和十进制是怎样转换的? 4. 如何实现0.1加0.2等于0.3? 1. 0.1加0.2不等于0.3? 什么 ...
- 如何用Python控制LEGO Wedo 2.0的电机
乐高官方提供的编程工具都是图形化的,这篇文章分享下如何用Python来连接控制LEGO Wedo 2.0中提供的蓝牙主控设备和电机. 学习资源 网上有两篇很有用的文章: Controlling a W ...
- python第七关再来一盘_盘一盘 Python 系列 7 - PyEcharts (v1.0)
原标题:盘一盘 Python 系列 7 - PyEcharts (v1.0) 本文含5835字,33图表截屏 建议阅读30分钟 0 引言 有读者说[ PyEcharts ]一贴里的图美如画,但是版本是 ...
最新文章
- C++中的private protected public区别
- static void SetSysClockTo72(void)的一些理解
- uiautomator2进阶
- 使用NSURLProtocol实现离线缓存
- python数组索引和切片_python numpy数组的索引和切片的操作方法
- linux的多任务 多进程,浅谈linux模拟多线程崩溃和多进程崩溃
- php artisan passport,API 认证解决方案:Laravel Passport
- 线程池的使用及ThreadPoolExecutor的分析(一)
- 已获千赞,从理论到实践!
- fatal error LNK1104: 无法打开***.exe的错误
- Java中的Thread.sleep()– Java线程睡眠
- 如何写一份交互说明文档
- 【AutoCAD】04.直线类命令
- 一条互联网广告多少钱?
- 2014年5月份第1周51Aspx源码发布详情
- error: C99 designator ‘personName’ outside aggregate initializer
- CSDN怎么下载文件
- 软件测试 - 功能测试Ⅱ
- 信息时代,书香更宜人
- 移动页面input手机键盘中的“搜索”按键