深度学习与目标检测:工具、原理与算法
上QQ阅读APP看书,第一时间看更新

2.3.10 FancyIndexing

如果要索引NumPy向量(或者矩阵)其中的一个值,是比较容易的,比如通过x[0]取值。但是,如果取数条件更复杂,比如需要返回NumPy数组中的第3个、第5个以及第8个元素,该怎么办呢?使用Fancyindexing就可以解决这个问题。


import numpy as np
x = np.arange(15)
ind = [3,5,8]
print(x[ind])

我们也可以从一维向量中构建新的二维矩阵。


import numpy as np
x = np.arange(15)
np.random.shuffle(x)
#第一行需要取x向量中索引为0和2的元素,第二行需要取x向量中索引为1和3的元素
ind=np.array([[0,2],[1,3]])  
print(x)
print(x[ind])

对于二维矩阵,我们使用fancyindexing取数也是比较容易的。


import numpy as np
x = np.arange(16)
X = x.reshape(4,-1)
row = np.array([0,1,2])
col = np.array([1,2,3])
print(X[row,col])  #相当于取3个点,分别是(0,1)、(1,2)、(2,3)
print(X[1:3,col])  #相当于取第2、3行以及我需要的列