彻底搞懂Python切片操作

一、  Python可切片对象的索引方式

包括:正索引和负索引两部分,如下图所示,以list对象a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为例:

1

二、  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]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容