Numpy Indexing
从numpy的向量中取得需要的元素与从数组中取得元素类似,不过numpy提供了更高级的玩法,一起来看看。
一维向量
假设有向量a=[1,2,3,4],从a中取得部分元素的方法有:
- 从中取出一个元素用a[i],i表示索引。
- 从中连续的多个元素,比如取出前三个元素,则使用a[0:3],可以把0给省略掉a[:3]。a[:-2]从中取出最后两个元素。
- 从中取出多个不连续的元素,参数为一个list。比如a[[0,2]],表示取出第1和第3个元素。
- 取出所有元素用a[:],这种表示方式在多维向量中很有用。
这里面的的规律则是:
- 用a:b来表示一个范围,a为起点,b为终点(不包含在结果中),a如果不写的话则表示0,b不写的话表示最后一个元素。
- 用[a,b,c]来获取多个不连续的元素。
多维向量
从多维向量中取出元素的方式与从一维向量中取出元素类似,只是需要指定各个维度元素的范围。
比如,a为二维向量,如下:
| >>> a = np.array([[1,2,3],[4,5,6]]) | 
看几个例子就明白是什么意思了。
- a[:, -1]:第一维的范围是:,表示第一维所有元素都取出,第二维只去最后一个元素,因此结果是- [3, 6]。注意:这里第二维是取最后一个元素,不是取出一个1维数组,因此降维了,结果就是个1维数组。
- a[:, -1:],第一维依然是取出所有元素,第二维是最后一个元素,但是-1:是取出一个范围内的元素,只是这个范围只有1个元素,因此结果还是二维的,结果是- [[3], [6]]。
- a[:, :2],第一维取出所有元素,第二维取出前两个元素,因此结果是个二维向量- [[1, 2], [4, 5]]。
- a[[1], [1,2]], 第一维取出第2个元素,第二维取出第2和3个元素,因此结果是- [5, 6]。
简单来讲,只要依次分析各个维度上取哪些元素,然后组合起来即可。需要注意是每个维度上取出的单个元素还是一个范围。取出单个元素会降低维度。