Tensor常用的高端切片之Tensor[...,:n]和Tensor[:,n]的区别

1. 先说结论

结论一:T[ ... , : n ]最后1维的前n个元素
结论二:T[ : , :n ]第2维的前n个元素
结论二扩展:
T[:,:,:n]取第3维的前n个元素,T[:,:,:,:n]取第4维的前n个元素前边有几个:,就相当于前边几个完整(省略)的维度。

2. 代码与分析

np.array( )terch.tensor( )tf.tensor( )切片效果一样,这里以np.array()进行演示。

2.1 […,:2]和[:,:2]之间的区别

import numpy as np

anchors = np.array( [
					  [[1,2,3], [4,5,6], [7,8,9]],
                      [[10,20,30], [40,50,60], [70,80,90]],
                      [[100,200,300], [400,500,600], [700,800,900]]
                    ])
print(anchors.shape)			# (3,3,3) : 3行,每横分3段,每段3个数字。

c = anchors[...,:2]		# 最后一维,每三个数字取前2个数字	
print('C:',c)					
print(c.shape)

d = anchors[:,:2]		# 第二维,3段取前2段
print('D:',d)
print(d.shape)
c的打印结果d的打印结果
在这里插入图片描述在这里插入图片描述

2.2 [:,:2]和[:,:,:2]之间的区别

import numpy as np

anchors = np.array([
					 [ 
					   [[1,2,3], [4,5,6], [7,8,9]],
                 	   [[10,20,30], [40,50,60], [70,80,90]],
                 	   [[100,200,300], [400,500,600], [700,800,900]] 
                 	 ], [
					   [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
 					   [[10, 20, 30], [40, 50, 60], [70, 80, 90]],
				 	   [[100, 200, 300], [400, 500, 600], [700, 800, 900]]
				 	 ]
                  ])
print(anchors.shape)	# (2, 3, 3, 2) : 2块,每块3行,每行3段,每段3个数字

d = anchors[:,:2]		# :块,3行中的前2行 
print('D:',d)
print(d.shape)

f = anchors[:,:,:2]		# :块,:行,3段中的前两段
print('F:',f)
print(f.shape)
d的打印结果f的打印结果
在这里插入图片描述在这里插入图片描述

3. 总结

一个tensor如果只有2维,那么tensor[…,:n]和tensor[:,:n]结果一样的。
如果这个tensor是一个多维度张量,如果想取最后 一维的前n个元素则选用...(常用),如果想取中间某维度的前几个则用

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值