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