Numpy简易教程3——数组索引

通过索引访问数组

NumPy以提供高效率的数组著称,这主要归功于索引的易用性。这里主要介绍一维数组和多维数组的索引方式。

1. 一维数组的索引

一维数组的索引方法很简单,Python原生list下标索引切片索引同样适用于一维数组。

案例:使用下标索引和切片索引访问一维数组

# 构造一维数组
arr = np.arange(10)
print('数组为:',arr)
# 用整数作为下标可以获取数组中的某个元素
print('索引结果为:',arr[5]) 
# 用范围作为下标获取数组的一个切片,包括arr[3]不包括arr[5],即[3,5)
print('索引结果为:',arr[3:5])
# 省略开始下标,表示从arr[0]开始
print('索引结果为:',arr[:5])  
# 下标可以使用负数,-1表示从数组后往前数的第一个元素
print('索引结果为:',arr[-1])
# 范围中的第三个参数表示步长,2表示隔一个元素取一个元素
print('索引结果为:',arr[1:-1:2])
# 步长为负数时,开始下标必须大于结束下标
print('索引结果为:',arr[5:1:-2])  
数组为: [0 1 2 3 4 5 6 7 8 9]
索引结果为: 5
索引结果为: [3 4]
索引结果为: [0 1 2 3 4]
索引结果为: 9
索引结果为: [1 3 5 7]
索引结果为: [5 3]
#下标还可以用来修改元素的值
arr[2:4] = 100,101
print('索引结果为:',arr)  
索引结果为: [  0   1 100 101   4   5   6   7   8   9]

2.多维数组的索引

多维数组的索引方法与一维数组相似,也支持整数索引和切片索引,但是多维数组的每一个维度都有一个索引,各个维度的索引之间用逗号隔开。

案例:使用下标索引和切片索引访问多维数组

# 构造二维数组
arr = np.array([[1, 2, 3, 4, 5],[4, 5, 6, 7, 8], [7, 8, 9, 10, 11]])
print('创建的二维数组为:',arr)
# 索引第0行中第3和第4列的元素
print('索引结果为:',arr[0,3:5]) 
# 索引第2和第3行中第3列、第4列和第5列的元素
print('索引结果为:\n',arr[1:,2:])
# 索引第2列的元素
print('索引结果为:',arr[:,2])
创建的二维数组为: [[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]
索引结果为: [4 5]
索引结果为:
 [[ 6  7  8]
 [ 9 10 11]]
索引结果为: [3 6 9]

3. 整数序列索引

数组同样也可以使用整数序列进行访问。

案例:使用整数序列访问多维数组

# 构造数组
arr = np.arange(10)
print('创建的数组为:',arr)
# 提取索引为1,3,4的元素
print('索引结果为:',arr[[1,3,4]]) 
# 提取索引为1,1,4的元素,注意:列表索引支持索引重复
print('索引结果为:',arr[[1,1,4]]) 
创建的数组为: [0 1 2 3 4 5 6 7 8 9]
索引结果为: [1 3 4]
索引结果为: [1 1 4]
# 构造数组
arr = np.array([[1, 2, 3, 4, 5],[4, 5, 6, 7, 8], [7, 8, 9, 10, 11]])
# 从两个序列的对应位置取出两个整数组成下标:arr[0,1], arr[1,2], arr[2,3]
print('索引结果为:',arr[[(0,1,2),(1,2,3)]])
# 索引第2、3行中第0、2、3列的元素
print('索引结果为:',arr[1:,(0,2,3)]) 
索引结果为: [ 2  6 10]
索引结果为: [[ 4  6  7]
 [ 7  9 10]]

4. 整数序列索引

数组同样也可以使用布尔值索引进行访问。

案例:使用整数序列访问多维数组

# 构造数组
arr = np.arange(10)
print('创建的数组为:',arr)
# 提取值大于7元素
print('索引结果为:',arr[arr>7]) 
创建的数组为: [0 1 2 3 4 5 6 7 8 9]
索引结果为: [8 9]

猜你喜欢

转载自blog.csdn.net/mighty13/article/details/119578666