说明
python 双冒号切片操作
[起始:结束:步长],其中起始和结束都可以省略,也可以只省略其中一个
实例
#先创建一个tensor 变量
import torch
demo=torch.tensor([[ -45.2548, -90.5097, 45.2548, 90.5097],
[ -90.5097, -181.0193, 90.5097, 181.0193],
[-181.0193, -362.0387, 181.0193, 362.0387],
[ -64.0000, -64.0000, 64.0000, 64.0000],
[-128.0000, -128.0000, 128.0000, 128.0000],
[-256.0000, -256.0000, 256.0000, 256.0000],
[ -90.5097, -45.2548, 90.5097, 45.2548],
[-181.0193, -90.5097, 181.0193, 90.5097],
[-362.0387, -181.0193, 362.0387, 181.0193]])
demo.shape
Out[48]: torch.Size([9, 4])
1.没有起始
demo[:,:2,1] 逗号前的 : 表示索引所有行, 省略起始(即 从0开始),结束为2,步长为1,所以输出前两列
demo[:,:2:1]
Out[50]:
tensor([[ -45.2548, -90.5097],
[ -90.5097, -181.0193],
[-181.0193, -362.0387],
[ -64.0000, -64.0000],
[-128.0000, -128.0000],
[-256.0000, -256.0000],
[ -90.5097, -45.2548],
[-181.0193, -90.5097],
[-362.0387, -181.0193]])
2.没有结束
demo[:,1::2] 逗号前的 : 表示索引所有行, 起始为1,省略结束(即到最后一列),步长为2,所以输出第一列和第三列
demo[:,1::2]
Out[51]:
tensor([[ -90.5097, 90.5097],
[-181.0193, 181.0193],
[-362.0387, 362.0387],
[ -64.0000, 64.0000],
[-128.0000, 128.0000],
[-256.0000, 256.0000],
[ -45.2548, 45.2548],
[ -90.5097, 90.5097],
[-181.0193, 181.0193]])
3.起始和结束都没有
demo[:,::3] 逗号前的 : 表示索引所有行, 起始和结束都省略(表示从第一列到最后一列),步长为3,所以输出第一列和第四列
demo[:,::3]
Out[52]:
tensor([[ -45.2548, 90.5097],
[ -90.5097, 181.0193],
[-181.0193, 362.0387],
[ -64.0000, 64.0000],
[-128.0000, 128.0000],
[-256.0000, 256.0000],
[ -90.5097, 45.2548],
[-181.0193, 90.5097],
[-362.0387, 181.0193]])