Python数据分析:numpy高级索引
整数数组索引:
import numpy as np
x = np.array([[1, 2],
[3, 4],
[5, 6]])
# 取出x中(0,0),(1,1),(2,0)处的元素
y = x[[0,1,2],
[0,1,0]]
print (y)
运行结果:
import numpy as np
x = np.array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
print (x)
print ('--------------------')
rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
# 取出矩阵四个角(0,0),(0,2),(3,0),(3,2)位置的元素
y = x[rows,cols]
print (y)
运行结果:
布尔索引:通过布尔运算来获取符合指定条件的元素的数组
import numpy as np
x = np.array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
print (x)
print ('--------------------')
# 打印出大于 5 的元素
print (x[x > 5])
运行结果:
import numpy as np
a = np.array([np.nan, 1,2,np.nan,3,4,5])
#运用 ~(取补运算符)过滤NaN
print (a[~np.isnan(a)])
运行结果:
花式索引:利用整数数组进行索引,根据索引数组的值作为目标数组的某个轴的下标来取值。对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;如果目标是二维数组,那么就是对应下标的行。
import numpy as np
x=np.arange(32).reshape((8,4))
print(x)
print ('--------------------')
# 取出原数组中对应下标的行
print (x[[4,2,1,7]])
print ('--------------------')
# 传入多个索引数组,取出1,5,7,2下标所对应的行,并按0,3,1,2的顺序按列排序
print (x[np.ix_([1,5,7,2],[0,3,1,2])])
运行结果:
参考:http://www.runoob.com/numpy