python中符合序列的有序序列都支持切片,比如列表、字符串、元组
主要介绍列表和元组

1.列表切片
格式: 【start: end: step】
start:开始索引;end:结束索引;step:步长(步长为正时,从左到右索引,正序取值;步长为负时,从右到左索引,倒序取值)
特别注意end表示的索引为开区间,不会取到该序号对应的值

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

a = [1,2,3,4,5,6]
 
a[:3:1]   #默认索引start从0开始,[0,3)左闭右开
>>>[1,2,3]
 
a[:3]    #默认步长为 1 
>>>[1,2,3]
 
a[-4:-2:1]  # 出现负号,末尾序号为-1,[-4, -2)就是3和4
>>>[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开始,[-1, -4),一共三个数
 
a[3:0:-1]
>>>[4,3,2]   #倒序索引
 
 
a[-2:2:-1]
>>>[5,4]

2.数组切片(对于大列表,可以使用numpy.array(list)转换为数组)

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

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

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

2.3三维数组X[页数, 行, 列]
X[:,:,0]、X[:,:,1]一般用在三维数组

大家可以把三维数组想象成一本书,第一维是每一页,行和列是每一页的行和列

X[0, 0, 0] 表示第一页第一行第一列的数据
X[:, 0, 0] 表示所有页第一行第一列的数据
X[0] 选取第一页的所有数据
X[:,:,0], 表示所有页的第一列的所有行数据
X[:,:,1], 表示所有页的第二列的所有行数据

X[:,:,m:n], 表示第m列到第n-1列的所有页数中所有行的数据
X[:,m:,n:], 表示所有页第m行和第n列之后的数据
X[:,m:,n:y], 表示所有页第m行之后,从第n列到第y-1行的数据

最后加粗的部分大家可以自行验证一下,比较不好理解,切片很灵活,我也只能列举出一些,遇到不会的使用交互式命令敲一敲代码,亲自跑跑,应该差不多知道了。

下面是一个现成的三维数组:

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]]])

我使用array数组进行讲解,mat矩阵同样适合;
注意一点,在array数组中,可以使用array[1, 2],也可以使用array[1][2],但是在mat矩阵中,只可以使用mat[1, 2],如果使用[1][2]是会报错的