导入 NumPy 库:
In [1]:
import numpy as np #导入 NumPy 库 np.__version__ #打印numpy版本
Out[1]:
'1.24.2'
细心的读者可以发现,前面的切片和索引操作只能索引出有规律的元素数据,比如同轴向,若要索引如下元素则无法实现,下面就介绍数组的高级索引,可以实现对任意元素的索引。
2.2.3: 数组高级索引 -花式索引
花式索引是指NumPy使用整型数组作为索引。
整型数组作为索引可以获取数组中任意元素。整型数组表示方式是每个维度都可以是该维度的一组下标值,可以用NumPy数组,元组或列表形式表示。若某个维度缺省索引则表示该维度索引该维度的所有下标。
花式索引其实就是索引的扩展,前面的索引操作每个维度都只有一个下标,而花式索引时维度是采用一组下标进行索引。需要注意的是,花式索引有两种情况:
- 每个维度的整数数组索引的下标数目要相同,索引时是对应位置的各维度的下标组成下标对进行索引,索引得到一维数组。
- 每个维度的整数数组索引的下标数目不相同时,只允许两种情况,要么有的维度无索引,表示该维度索引全部元素,要么有的维度只有一个下标索引。否则报错。
其意义是根据采用整型数组作为目标数组的某个轴的下标值进行索引。当我们想以特定的顺序来选取子集的时候,只需传入一个用于指定顺序的整数列表或ndarray即可。
下面通过实例来展示花式索引过程:
In [2]:
arr2_3_1 = np.arange(1,16) arr2_3_1
Out[2]:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
In [3]:
arr2_3_1[5]
Out[3]:
6
通过列表或元组进行对arr2_3_1花式索引,可以索引出对应下标位置的元素,注意:使用元组时需要在元组后有个逗号。否则报错
In [4]:
arr2_3_1[[4,6,2]]
Out[4]:
array([5, 7, 3])
In [5]:
arr2_3_1[(4,6,2),] #使用元组时需要在元组后有个逗号
Out[5]:
array([5, 7, 3])
一维数组的花式索引结果是对应位置的元素组成新的一维数组。
2、多维数组花式索引
In [6]:
arr2_3_2 = np.arange(1,16).reshape(3,5) arr2_3_2
Out[6]:
array([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10], [11, 12, 13, 14, 15]])
各维度以元组方式进行花式索引:
In [7]:
arr2_3_2[(0,1,2),(4,2,3)]
Out[7]:
array([ 5, 8, 14])
也可以是列表形式:
In [8]:
arr2_3_2[[0,1,2],[4,2,3]]
Out[8]:
array([