一吗货、? 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. 多維切片操作
單維和多維之間的區(qū)別在于:多維之間的切片用逗號分開养叛,假如:
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]