【问题标题】:Indexing with boolean arrays into multidimensional arrays using numpy使用 numpy 将布尔数组索引到多维数组中
【发布时间】:2012-04-10 14:30:08
【问题描述】:

我是使用 numpy 的新手,我真的不明白的一件事是索引数组。

tentative tutorial中有这个例子:

>>> 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])

我不知道为什么它会做最后一件事。谁能给我解释一下?

谢谢!

【问题讨论】:

    标签: python arrays numpy indexing scipy


    【解决方案1】:

    您的数组包括:

    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]
    

    如您所见,这相当于上面显示的i1i2。因此,a[b1,b2] 将得到相同的结果。

    还要注意,上述操作之所以可行,是因为b1b2 具有相同数量的True 值(因此,当以整数形式表示时,它们表示两个长度相同的数组)。

    【讨论】:

    猜你喜欢
    • 2017-11-17
    • 2013-07-20
    • 2013-06-19
    • 2020-03-25
    • 2018-01-22
    • 1970-01-01
    • 2019-06-18
    • 2018-04-01
    • 2017-09-24
    相关资源
    最近更新 更多