上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行以及我需要的列