匹配多个值的Numpy布尔索引

2024-09-29 21:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在numpy中使用布尔索引来创建一个对应于数组中某些值存在的布尔数组

我做的最明显的尝试是:

x = np.array([1, 2, 3, 2, 5, 3, 1, 2, 3, 4, 5])

xBool = x == 2
xBool2 = x == 3
xBool3 = x == 5

x[xBool] = 0
x[xBool2] = 0
x[xBool3] = 0

print(x)

--输出--

>>> 
[1 0 0 0 0 0 1 0 0 4 0]

这是我想要的,但正如您从代码中看到的,它需要为每个匹配单独的行。对于3次以上的比较,这可能会非常长

然后我尝试了以下方法:

y = np.array([1, 2, 3, 2, 5, 3, 1, 2, 3, 4, 5])

yBool = y in (2, 3, 5)

y[yBool] = 0

print(y)

但是我有个错误说:

ValueError: The truth value of an array with more than one element is ambiguous.

Use a.any() or a.all()

我不确定如何快速进行多重比较,而不是使用单独的布尔数组。有没有一种OR可以用于布尔索引


Tags: the方法代码innumpy错误np数组

热门问题