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

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

猜你喜欢

转载自blog.csdn.net/guoyang768/article/details/84840658