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



如果我有一个布尔数组(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])]

我想返回两个数组匹配的索引(整个数组比较而不是元素比较)例如,我如何获得输出= [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)