一、 Python可切片对象的索引方式
包括:正索引和负索引两部分,如下图所示,以list对象a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:
二、 Python切片操作的一般方式
切片操作基本表达式:object[start_index:end_index:step]
step:正负数均可,其绝对值大小决定了切取数据时的‘‘步长”,而正负号决定了“切取方向”,正表示“从左往右”取值,负表示“从右往左”取值。当step省略时,默认为1,即从左往右以步长1取值。
start_index:表示起始索引(包含该索引对应值);
end_index:表示终止索引(不包含该索引对应值);
三、 Python切片操作详细例子
以下示例均以list对象a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:
>>>a=[0,1,2,3,4,5,6,7,8,9]
1. 切取单个元素 当索引只有一个数时,表示切取某一个元素。
>>>a[0] out: 0
>>>a[-4] out: 6
>>>a[0:4] out: [0, 1, 2, 3]
2. 切取完整对象 当start_index为空时代表开始点,当end_index为空时代表结束点
>>>a[:] out: [0,1,2,3,4,5,6,7,8,9] #相当于a[0:10:1]
>>>a[::] out: [0,1,2,3,4,5,6,7,8,9] #相当于a[0:10:1]
>>>a[::-1] out: [9,8,7,6,5,4,3,2,1,0] #相当于a[10:0:-1] 或者 a[-1:-10:-1]
a[...,None,None,None] : ...代表取所有元素,None增加一个维度
3. 多维切片操作
单维和多维之间的区别在于:多维之间的切片用逗号分开,假如:
b = torch.randn(1,2,3,4) #size (1,2,3,4)
b[:,:,0,0] #size (1,2) 0、1维不变,2、3维取分别取第0个
四、 常用切片操作
1.取偶数位置
>>>c=a[::2] #out:[0,2,4,6,8]
2.取奇数位置
>>>c=a[1::2] #out:[1,3,5,7,9]
3.修改单个元素
>>>a[3]=['A','B'] #out:[0,1,2,['A','B'],4,5,6,7,8,9]
4.在某个位置插入元素
>>>a[3:3]=['A','B','C'] #out:[0,1,2,'A','B','C',3,4,5,6,7,8,9]
5.替换一部分元素
>>>a[3:6]=['A','B'] #out:[0,1,2,'A','B',6,7,8,9]