【Python】[…,0,0]和[:,0,0]是什么意思呢 |
您所在的位置:网站首页 › circle是什么意思呢 › 【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中,所有通道的所有元素。 第二个结果:第0个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]呢? |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |