python - 带有嵌套布尔数组的logical_and
问题描述
我有一个(非常长的)a
带有k
True
条目的布尔数组和一个b
长度为的布尔数组k
。我想得到一个布尔数组c
,True
当且仅当a
“和”b
是True
:
import numpy
a = numpy.array([False, False, True, False, True, False])
b = numpy.array([True, False])
assert numpy.sum(a) == len(b) # guaranteed
c = numpy.zeros(len(a), dtype=bool)
idx_b = 0
for k in range(len(a)):
if a[k]:
if b[idx_b]:
c[k] = True
idx_b += 1
print(c)
[False False True False False False]
这里使用了一个循环,但我认为布尔索引必须有一种更快的方法,但我不能完全理解它。
有什么提示吗?
解决方案
只需用自身屏蔽输入数组(自屏蔽?)并分配 -
a[a] = b
如果您需要在新数组中输出,请复制输入数组并对其执行屏蔽。
推荐阅读
- angular - 如何通过迭代打字稿中的数组和标签中的分组项来填充 MenuItem?
- graph - 如何将顶点拆分为两条路径,并限制两个顶点可以相邻
- angular - 如何将类输入属性绑定到 Angular 中组件的动画文件?
- python - 给定概率生成二元结果随机结果
- visual-studio - 将 clang 与 pass 集成到 Visual Studio
- python - 替换数组中的行数时如何停止小数变为整数?
- google-app-engine - Google Cloud Api Gateway - {"message":"no healthy upstream","code":503}
- python - Python:形成一个以一维列表为列的表
- r - 如何在R中按组对变量求和
- python - 使用 Psycopg2 将 PostgreSQL 查询结果导出为 .SQL 插入