列表、数组切片X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]

本文详细介绍了Python中列表和数组的切片操作,包括一维、二维和三维数组的正序与倒序索引,以及如何通过指定start、end和step参数来精确获取所需数据片段。

python中对于列表和数组进行切片是很频繁的

1.列表切片

python中符合序列的有序序列都支持切片,例如列表、字符串、元祖

格式:【start:end:step】

start:开始索引;end:结束索引;step:步长(步长为正时,从左到右索引,正序取值;步长为负时,从右到左索引,倒序取值)

1.1 正序索引:步长step>0,索引的时候从左往右数,

a = [1,2,3,4,5,6]

a[:3:1]   #默认索引start从 1 开始
>>>[1,2,3]

a[:3]    #默认步长为 1 
>>>[1,2,3]

a[-4:-2:1]
>>>[3,4]

a[-4:4:1]
>>>[3, 4]

1.2 倒序索引:步长step<0,索引的时候从右往左数,

a = [1,2,3,4,5,6]

a[:-4:-1]
>>>[6, 5, 4]  #默认从 -1 开始

a[3:0:-1]
>>>[4,3,2]   #倒序索引


a[-2:2:-1]
>>>[5,4]

2.数组切片(数组形式,若是一个大列表,可以np.array(list)转成数组)

2.1 二维数组,X【行,列】 

对于X[:,0] ,取二维数组中第一列所有行的数据

对于X[1,:],取二维数组中第二行所有列的数据

对于X[:,m:n] ,取二维数组中第m列到第n-1列所有行的数据

对于X[m:n,:],取二维数组中第m行到第n-1行所有列的数据

2.2 三维数组,X【楼层,行,列】

创建一个三维数组:

a = np.arange(24).reshape(2,3,4)
print(a)

array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

我们可以形象的把它看成一个两层楼的建筑,每层楼有12个房间,并排列成3行4列。

(1)可以用三维坐标来选定任意一个房间,即楼层、行号、列号。例如,选定第一层楼、第一行、第一列的房间,如下:

a[0,0,0]
>>>0

(2)选取所有楼层、第一行、第一列的房间 ,如下:

a[:,0,0]
>>>array([ 0, 12])

(3)选取第一层楼所有的房间,如下:

a[0]
>>>array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

对于X[:,:,0],取三维数组中第1列的所有楼层,所有行的数据

对于X[:,:,m:n],取三维数组中第m列到第n-1列的所有楼层,所有行的数据 

a[:,:,2:4]
>>>array([[[ 2,  3],
        [ 6,  7],
        [10, 11]],

       [[14, 15],
        [18, 19],
        [22, 23]]])

注:以上数组形式的切片方法,在矩阵中同样适用。但是,若要取某个准确的值时,比如说第一列,第二行这一准确值时,矩阵的话,最好用mat[1,2],而数组的话,既可以用array[1,2],也可以用array[1][2] 。

 

 

 

 

 

 

 

 

 

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值