Numpy数组索引
数组的索引主要用来获得数组中的数据。在 Numpy 中数组的索引可以分为两大类:一是一维数组的索引;二是二维数组的索引。一维数组的索引和列表的索引几乎是相同的,二维数组的索引则有很大不同。
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
1. 一维数组索引操作
一维数组的索引和 Python 中 list 结构索引十分相似,需要注意在切片索引的时候末尾的下标是取不到的。示例代码如下。In [1]: import numpy as np In [2]: a = np.array([1,2,3,4,5,6]) In [3]: a[0] # 下标为0的元素 Out[3]: 1 In [4]: a[-1] # 下标为-1的元素 Out[4]: 6 In [5]: a[1:3] # 下标从1到3的切片,不包含3 Out[5]: array([2, 3]) In [6]: a[2:] # 下标从2到末端的切片 Out[6]: array([3, 4, 5, 6]) In [7]: a[1:5:2] # 下标从1到5的切片,不包含5,且步长为2 Out[7]: array([2, 4])
2. 二维数组索引操作
二维数组的索引格式是中括号中逗号前选择行,逗号后选择列。而在选择行和列的时候可以传入列表,或者使用冒号来进行切片索引。示例代码如下。In [1]: import numpy as np In [2]: a = np.array([[1,2,3,4], ...: [5,6,7,8], ...: [9,10,11,12], ...: [13,14,15,16]])首先我们可以使用数组的 shape 属性来查看该数组的形状,可以看到该数组的形状是 4 行和 4 列。
In [3]: a.shape Out[3]: (4, 4)在二维数组的索引中,冒号指的是切片,a[1:3] 的意思是按行索引,选取下标为 1、下标为 2 的所有行的元素。
In [4]: a[1:3] # 按列索引,选取下标为1、下标为2的所有行的元素 Out[4]: array([[ 5, 6, 7, 8], [ 9, 10, 11, 12]])在二维数组的索引中,不仅可以按行索引,还可以按列索引,而且还可以按行按列同时索引。比如 a[1:3,0:2] 所表达的意思就是,选取行标为 1∶3、列标为 1∶2 的所有元素。
In [5]: a[1:3,0:2] # 选取行表为1∶3、列标为1∶2的所有元素 Out[5]: array([[ 5, 6], [ 9, 10]])切片的本质是传入一个连续的列表,所以我们还可以传入列表来获得相应位置的元素。比如 a[[0,2],[1,2]] 的含义是选取 0 行、2 行、1 列、2 列对应的元素。
In [6]: a[[0,2],[1,2]] # 选取0行、2行、1列、2列对应的元素 Out[6]: array([ 2, 11])
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。