[英]numpy array indexing with boolean
我看到有人用布尔数组索引数组。 我做了一些研究并测试了以下代码
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=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]], dtype=bool)
和
A[B]
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
这是我的问题,我尝试通过输入完全相同的数组而不是放入变量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
我做错了什么?有什么区别?
谢谢
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[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]])]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.