正如我在对先前答案的评论中告诉您的那样,您需要使用以下任一方法:
c[a & b]
要么
c[np.logical_and(a, b)]
原因是
andPython使用该关键字在两个布尔值之间进行测试。数组如何成为布尔值?如果它的75%的商品是
True,
True还是
False?因此,numpy拒绝比较两者。
因此,您必须使用逻辑函数在逐个元素的基础上比较两个布尔数组(
np.logical_and)或二进制运算符
&。
而且,出于索引目的,您确实需要一个布尔数组,其大小与要索引的数组相同。而且 它必须是一个数组
,你不能用列表
True/False来代替:其原因是,使用一个布尔数组告诉NumPy的要返回的元素。如果您使用的列表
True/False,则NumPy会将其解释
1/0为整数列表(即索引)的列表,这意味着您将获得数组的第二个或第一个元素。不是你想要的。
现在,您可以猜测,如果要使用两个布尔数组
a或
b用于索引,请选择
a或
b为True的项目,则可以使用
c[np.logical_or(a,b)]
要么
c[a | b]



