花式索引
花式索引指的是利用整数数组进行索引
花式索引跟切片不一样,它总是将数据复制到新数组中
1、传入顺序索引数组
In [94]: arr=np.arange(32).reshape((8,4))
In [95]: arr
Out[95]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31]])
In [96]: arr[[4,2,1,7]]
Out[96]:
array([[16, 17, 18, 19],
[ 8, 9, 10, 11],
[ 4, 5, 6, 7],
[28, 29, 30, 31]])
2、传入倒序索引数组
In [97]: arr[[-4,-2,-1,-7]]
Out[97]:
array([[16, 17, 18, 19],
[24, 25, 26, 27],
[28, 29, 30, 31],
[ 4, 5, 6, 7]])
3、传入多个索引数组(要使用np.ix_)
In [98]: arr[np.ix_([1,5,7,2],[0,3,1,2])]
Out[98]:
array([[ 4, 7, 5, 6],
[20, 23, 21, 22],
[28, 31, 29, 30],
[ 8, 11, 9, 10]])
整数索引
Example1(其结果包括数组中(0,0),(1,1)和(2,0)位置处的元素。)
In [111]: x=np.arange(12).reshape((4,3))
In [112]: x
Out[112]:
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
In [113]: y=x[[0,1,2],[0,1,0]]
In [114]: y
Out[114]: array([0, 4, 6])
Example2(其结果包括数组中(0,0),(0,2),(3,0)和(3,2)位置处的元素。)
In [117]: rows=np.array([[0,0],[3,3]])
In [118]: cols=np.array([[0,2],[0,2]])
In [119]: y=x[rows,cols]
In [120]: y
Out[120]:
array([[ 0, 2],
[ 9, 11]])
布尔索引
In [129]: x[x>5]
Out[129]: array([ 6, 7, 8, 9, 10, 11])