逻辑与嵌套布尔数组

Nic*_*mer 4 python arrays numpy

我有一个(很长)a带有k True条目的布尔数组和一个b长度为 的布尔数组k。我想得到一个布尔数组cTrue当且仅当a“和”bTrue

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)
Run Code Online (Sandbox Code Playgroud)
[False False  True False False False]
Run Code Online (Sandbox Code Playgroud)

这里使用了一个循环,但我认为必须有一种更快的布尔索引方式,但我无法完全理解。

任何提示?

Div*_*kar 6

简单地用它自己屏蔽输入数组(自我屏蔽?)并分配 -

a[a] = b
Run Code Online (Sandbox Code Playgroud)

如果需要在新数组中输出,请复制输入数组并对其进行屏蔽。