有两种类型的高级索引- Integer索引 和 Boolean索引 。
整数索引
根据数组的N维索引选择数组中的任意项,每个整数数组代表该维度的索引数,当索引与目标ndarray的维数一样时,它变得很简单。
示例1
import numpy as np x = np.array([[1, 2], [3, 4], [5, 6]]) y = x[[0,1,2], [0,1,0]] print y
其输出如下-
[1 4 5]
选择包括第一个数组中位于(0,0),(1,1)和(2,0)的元素。
在以下示例中,选择了放置在4X3阵列角上的元素。选择的行索引为[0,0]和[3,3],而列索引为[0,2]和[0,2]。
示例2
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print 'Our array is:' print x print '\n' rows = np.array([[0,0],[3,3]]) cols = np.array([[0,2],[0,2]]) y = x[rows,cols] print 'The corner elements of this array are:' print y
该程序的输出如下-
Our array is: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] The corner elements of this array are: [[ 0 2] [ 9 11]]
输出选择是一个包含边角元素的ndarray对象 。
可以通过将一个切片(:)或省略号(…)与一个索引数组结合使用高级索引索引和基本索引。以下示例对行使用切片,对列使用高级索引。两者同时使用slice时,输出相同。但是高级索引会导致复制,并且可能具有不同的内存布局。
示例3
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print 'Our array is:' print x print '\n' # slicing z = x[1:4,1:3] print 'After slicing, our array becomes:' print z print '\n' # 使用列的高级索引 y = x[1:4,[1,2]] print 'Slicing using advanced index for column:' print y
该程序的输出如下:
Our array is: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] After slicing, our array becomes: [[ 4 5] [ 7 8] [10 11]] Slicing using advanced index for column: [[ 4 5] [ 7 8] [10 11]]
布尔数组索引
当输出对象是布尔运算(如比较运算符)的输出时,将使用这种类型的高级索引。
示例1
在此示例中,作为布尔索引的输出,返回大于5的项目。
import numpy as np x = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]]) print 'Our array is:' print x print '\n' # 现在我们将打印大于 5 的元素 print 'The items greater than 5 are:' print x[x > 5]
该程序的输出将是-
Our array is: [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] The items greater than 5 are: [ 6 7 8 9 10 11]
示例2
在此示例中,使用〜(补码运算符)来省略NaN(非数字)元素。
import numpy as np a = np.array([np.nan, 1,2,np.nan,3,4,5]) print a[~np.isnan(a)]
它的输出将是-
[ 1. 2. 3. 4. 5.]
示例3
下面的示例说明如何从数组中滤除非复杂元素。
import numpy as np a = np.array([1, 2+6j, 5, 3.5+5j]) print a[np.iscomplex(a)]
在这里,输出如下-
[2.0+6.j 3.5+5.j]
参考链接
https://www.learnfk.com/numpy/numpy-advanced-indexing.html
标签:11,教程,索引,示例,无涯,np,print,array,NumPy From: https://blog.51cto.com/u_14033984/7872698