将布尔数组与布尔数组列表进行比较并返回索引(非元素比较)

Comparing a boolean array with a list of boolean arrays and returning the index (non-elementwise comparrison)

如果我有一个布尔数组 (A) 并想将它与布尔数组列表 (B) 进行比较:

A = array([ True,  True, False, False, False, False,  True])

B = [array([ True,  True,  True, False, False, False,  True]), 
     array([ True,  True, False, False, False, False,  True]),
     array([False,  True, False, False, False, False, False])]

我想 return 两个数组匹配的索引(整个数组比较而不是元素比较)例如我如何获得输出 = [False, True, False] 或 [0, 1, 0] 也可以接受?

您需要先检查这两个数组,然后使用 .all(axis=1) 检查每一行,如下所示:

>>> from numpy import array
>>> A = array([ True,  True, False, False, False, False,  True])

>>> B = [array([ True,  True,  True, False, False, False,  True]), 
...      array([ True,  True, False, False, False, False,  True]),
...      array([False,  True, False, False, False, False, False])]


>>> A == B
array([[ True,  True, False,  True,  True,  True,  True],
       [ True,  True,  True,  True,  True,  True,  True],
       [False,  True,  True,  True,  True,  True, False]])


>>> (A == B).all(1)
array([False,  True, False])

from numpy import array
import numpy as np

A = array([ True,  True, False, False, False, False,  True])
B = [array([ True,  True,  True, False, False, False,  True]), 
    array([ True,  True, False, False, False, False,  True]),
    array([False,  True, False, False, False, False, False])]


res = []

for x in B:
    res.append(np.array_equal(A, x))

print(res)