整数数组索引
以下实例获取数组中 (0,0),(1,1) 和 (2,0) 位置处的元素
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] #(0,0),(1,1) 和 (2,0) 位置 print(y)
结果为[1 4 5]
可以借助切片 : 或 … 与索引数组组合。
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = a[1:3, 1:3] c = a[1:3, [1, 2]] d = a[..., 1:] print(a) print('\n') print(b) print('\n') print(c) print('\n') print(d) [[1 2 3] [4 5 6] [7 8 9]] [[5 6] [8 9]] [[5 6] [8 9]] [[2 3] [5 6] [8 9]]
布尔索引
我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print ('我们的数组是:') print (x) print ('\n') # 现在我们会打印出大于 5 的元素 print ('大于 5 的元素是:') print (x[x > 5]) >>>[6 7 8 9 10 11]
花式索引
花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。
花式索引跟切片不一样,它总是将数据复制到新数组中。
一维数组(读取下标为0,6的数据):
import numpy as np x = np.arange(9) print(x) # 一维数组读取指定下标对应的元素 print("-------读取下标对应的元素-------") x2 = x[[0, 6]] # 使用花式索引 print(x2) print(x2[0]) print(x2[1]) >>>[0 1 2 3 4 5 6 7 8] >>>-------读取下标对应的元素------- >>>[0 6] >>>0 >>>6
二维数组(输出下表为 4, 2, 1, 7 对应的行):
import numpy as np x=np.arange(32).reshape((8,4)) print(x) # 二维数组读取指定下标对应的行 print("-------读取下标对应的行-------") print (x[[4,2,1,7]]) print (x[[-4,-2,-1,-7]])#倒序索引数组
传入多个索引数组(要使用 np.ix_)
np.ix_ 函数就是输入两个数组,产生笛卡尔积的映射关系。
import numpy as np x=np.arange(32).reshape((8,4)) print (x[np.ix_([1,5,7,2],[0,3,1,2])]) # 笛卡尔积(1,0)(1,3)(1,1)(1,2)(5,0)(5,3)(5,1)(5,2)(7,0)(7,3)(7,1)(7,2)(2,0)(2,3)(2,1)(2,2)
最新评论