数组的索引和切片简介:
ndarray对象的内容可以通过索引和切片来访问和修改,与Python中list的切片操作一样。有三种可用索引方式:字段访问、基本切片和高级索引。本章节咱们主要讨论基本切片与索引的使用。
1、一维数组的索引
list01= [1,2,3,4,5]
np01 = np.array(list01,dtype="int32")
print(np01)
"""
正向递增索引 从0开始
1, 2, 3, 4, 5 数据
0 1 2 3 4 索引
1.左开右闭
2.不写startIndex默认从0开始
"""
print(np01[0]) #1
print(np01[1:4]) #[2 3 4]
print(np01[1:5]) #[2 3 4 5]
print(np01[:5]) #[1 2 3 4 5]
"""
反向递减索引 从-1开始
1, 2, 3, 4, 5 数据
-5 -4 -3 -2 -1 索引
1.左开右闭
2.不写startIndex默认从0开始
"""
print(np01[-1]) #5
print(np01[-5:-1]) #[1 2 3 4]
print(np01[-5:]) #[1 2 3 4 5]
2、一维数组的切片
语法: [start:stop:step]
list01= [1,2,3,4,5]
np01 = np.array(list01,dtype="int32")
print(np01)
#正向索引切片
print(np01[:])#从0到0
print(np01[3:])#从3开始到结尾
print(np01[:5])#从0开始到5结尾
print(np01[1:5:2])#步长是2
#反向索引切片
print(np01[::-1])#-1证明是反向获取
print(np01[-5:-2])
#正负一起使用
print(np01[-5:4]) #[1 2 3 4]
3、二维数组的索引
#创建二维数组
list01= [
[1,2],
[3,4],
[5,6],
[7,8]
]
np01= np.array(list01)
print(np01)
#print(np01.ndim) #查看维数
print(np01[1])#获取第二行
print(np01[1][1])#获取第二行第一列
4、二维数组的切片
语法: [对行进行切片,对列的切片]
对行的切片:可以有start:stop:step
对列的切片:可以有start:stop:step
#创建二维数组
list01= [
[1,2],
[3,4],
[5,6],
[7,8]
]
np01= np.array(list01)
print(np01)
print(np01[:,:])#所有行所有列
#所有行部分列
print(np01[:,1])#所有行第二列
print(np01[:,0:2])#所有行的第一列和第二列
#部分列所有行
print(np01[1,:])#获取第二行所有列
print(np01[0:2,:])#获取第一和二行所有列
print(np01[::2,:])#获取奇数行所有列
#部分行部分列
print(np01[1,1])#第二行第二列
#组合使用的时候改怎么办
#获取第三行第二列(6),第四行第一列(7)
#行写成元组放在前面,列写成元组放在后面
a= np01[(2,3),(1,0)]
print(a)
#负索引的使用
print(np01[-1])#最后一行
print(np01[::-1])#行倒序
print(np01[::-1,::-1])#行倒序,列倒叙
练习:
1.创建一个二维数组,取第二行第一列和第三行第二列的数据。
2.获取二维数组中数组的1,2行第2,3列的数据。