python - Numpy 布尔索引以匹配多个值
问题描述
我正在尝试在 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
我可以用于布尔索引的方法吗?
解决方案
推荐阅读
- wix - Burn/Bootstrapping:仅在用户选择时执行 Chainelement
- python - 将任务集分配给特定的 Python 进程(不使用 PID)
- javascript - 循环遍历对象数组和共享属性值上的组/增量对象值
- sharepoint - 无法以编程方式将文档共享给外部用户 - UserSharingResult 不提供 CurrentRole
- python - 遗留代码:如何使用 pytest 测试全局变量的值
- python - pyodbc + 如何根据用户输入更新记录?
- python - 是否可以在 guizero 中创建多个页面或刷新页面以显示新内容?
- c# - 如何在带有 AspNet Core Identity 的 .net core 5.0 中使用 keycloak?
- amazon-web-services - 如何通过 AWS CLI 命令在 AWS ECS 中创建取消注册/非活动任务定义的修订?
- django - 与 Jenkins、Docker 相关