In [1]:
import numpy as np
索引数组¶
In [4]:
# 索引数组必须是整数类型。索引数组种的每个值表示要使用数组哪个值取代当前索引。
x = np.arange(10, 1, -1)
x
Out[4]:
In [6]:
x[np.array([3, 3, 1, 8])]
Out[6]:
In [7]:
# 负数是允许的,表示反向索引
x[np.array([3, 3, -1, 8])]
Out[7]:
In [8]:
# 注意:索引数组实现的是:返回与索引数组shape相同,但值和值的数据类型是被索引数组的。
x[np.array([[1, 1],
[2, 3]])]
Out[8]:
索引多维数组¶
多维索引更为复杂,但是在一些高维度数据上尤为有用。
In [9]:
y = np.arange(35).reshape(5,7)
y
Out[9]:
In [12]:
# 索引数组具有相同的维度shape
# y[0,0] y[2,1] y[4,2]
y[np.array([0, 2, 4]), np.array([0, 1, 2])]
Out[12]:
In [14]:
# 索引数据不具有形同的shape。先尝试广播
y[np.array([0,2,4]), np.array([0,1])]
In [17]:
# 广播成功 y[0,1] y[2,1] y[4,1]
y[np.array([0,2,4]), 1]
Out[17]:
In [16]:
y[np.array([0,2,4])]
Out[16]:
布尔/掩码索引数组¶
索引数组结合切片¶
In [19]:
# 索引数组和切片是相互独立操作的。索引数组抽取行,切片抽取列
y[np.array([0, 2, 4]), 1:3]
Out[19]:
In [21]:
# 上面等价于
y[:, 1:3][np.array([0,2,4]), :]
Out[21]:
In [ ]:
Comments