[英]Indexing with boolean arrays into multidimensional arrays using numpy
我是新手使用numpy和一件我真正不理解的是索引数组。
在暂定教程中有这个例子:
>>> a = arange(12).reshape(3,4)
>>> b1 = array([False,True,True]) # first dim selection
>>> b2 = array([True,False,True,False]) # second dim selection
>>>
>>> a[b1,b2] # a weird thing to do
array([ 4, 10])
我不知道它为什么会这样做。 任何人都可以向我解释一下吗?
谢谢!
您的数组包括:
0 1 2 3
4 5 6 7
8 9 10 11
索引它的一种方法是使用整数列表,指定要包含的行/列:
>>> i1 = [1,2]
>>> i2 = [0,2]
>>> a[i1,i2]
array([ 4, 10])
含义:第1行第0列,第2行第2列
当你使用布尔索引时,你要告诉要包含哪些行/列以及哪些不包括:
>>> b1 = [False,True,True] # 0:no, 1:yes, 2:yes ==> [1,2]
>>> b2 = [True,False,True,False] # 0:yes, 1:no, 2:yes, 3:no ==> [0,2]
如您所见,这相当于上面显示的i1
和i2
。 因此, a[b1,b2]
将具有相同的结果。
另请注意,上述操作仅可能,因为b1
和b2
都具有相同数量的True
值(因此,它们表示以整数形式表示的两个相同长度的数组)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.