Python 带布尔值的numpy数组索引

Python 带布尔值的numpy数组索引,python,arrays,numpy,Python,Arrays,Numpy,我看到有人用布尔数组索引数组。我做了一些研究并测试了以下代码 import numpy as np A=np.arange(30) A.shape = (10,3) 这就给出了矩阵 >>> A array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 2

我看到有人用布尔数组索引数组。我做了一些研究并测试了以下代码

import numpy as np
A=np.arange(30)
A.shape = (10,3)
这就给出了矩阵

>>> A
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]])
然后我做了这个

B = A<10

我的问题是,我尝试输入完全相同的数组,而不是输入变量B,结果是一个错误

>>> A[[[ True,  True,  True],
...        [ True,  True,  True],
...        [ True,  True,  True],
...        [ True, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False]]]
Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
IndexError: too many indices for array
>>A[[[True,True,True],
…[真的,真的,真的],
…[真的,真的,真的],
…[对,错,错],
…[假,假,假],
…[假,假,假],
…[假,假,假],
…[假,假,假],
…[假,假,假],
…[假,假,假]]
回溯(最近一次呼叫最后一次):
文件“”,第10行,在
索引器:数组的索引太多
我做错了什么,有什么不同


谢谢

B
是一个数组,但
[True,False,…]
是一个列表

这是一样的:

A[np.array([[ True,  True,  True],
           [ True,  True,  True],
           [ True,  True,  True],
           [ True, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False]])]
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
使用:


在第二种方法中,您输入的是列表,它不像
A[B]
的第一种方法那样进行布尔掩蔽。在某些情况下,使用数组和列表进行索引是相同的,但这不是其中之一。
>>> A[[[ True,  True,  True],
...        [ True,  True,  True],
...        [ True,  True,  True],
...        [ True, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False],
...        [False, False, False]]]
Traceback (most recent call last):
  File "<stdin>", line 10, in <module>
IndexError: too many indices for array
A[np.array([[ True,  True,  True],
           [ True,  True,  True],
           [ True,  True,  True],
           [ True, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False],
           [False, False, False]])]
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
A[np.array([[ True,  True,  True],
    [ True,  True,  True],
    [ True,  True,  True],
    [ True, False, False],
    [False, False, False],
    [False, False, False],
    [False, False, False],
    [False, False, False],
    [False, False, False],
    [False, False, False]])]