三种索引方法:
- 基础索引
- 神奇索引
- 布尔索引
#导入模块
import numpy as np
#一维变量
x = np.arange(10)
#二维变量
X = np.arange(20).reshape(4,5)
基础索引:
一维数组
#同python中list一样,采用下标索引,同时也支持切片
print(x[2]) #输出结果为2
print(x[2:-1]) #输出结果为array([2,3,4,5,6,7,8])
二维数组
#分别用行坐标,列坐标进行筛选
X[-1,2] #结果是17
#也可以省略后续索引值,返回的数据是一个降低维度的数组
筛选-1对应的行X[-1] #结果是array([15,16,17,18,19])
筛选多行X[:-1] #结果是
`
array(
[[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]])`
筛选多行然后筛选多列X[:2,2:4] #结果为array([[2,3],[7,8]])
注意:切片的修改为修改原来的数组
原因:numpy经常要处理大数组,避免每次都复制
神奇索引
其实就是:用整数数组进行索引
#筛选多行,列可以省略X[[0,2]]
结果为array([[0,1,2,3,4],
[10,11,12,13,14]])
#筛选多列,行不能省略
X[:,[0,2,3]]
#同时指定行列列表,返回的是[(0,1),(2,3),(3,4)]位置的数字X[[0,2,3],[1,3,4]]
注意:与切片不同,神奇索引是将数据复制到一个新的数组
布尔索引
就是通过数组上是True还是False来提取的
#X>5的二维数组,既有行也有列,返回的是一维结果
X[X>15] #结果是array([16,17,18,19])
#也可以使用条件索引
condition = (x%2==0) | (x>7)
x[condition]
#结果为array([0,2,4,6,7,8,9])