检查数组-值是否包含在另一个数组中?

7
我希望针对数组A中的每个值,返回一个布尔值,表示它是否在数组B中。我想这应该是一个标准的过程,但我找不到如何实现的相关信息。以下是我的尝试:
A = ['User0','User1','User2','User3','User4','User0','User1','User2','User3'
     'User4','User0','User1','User2','User3','User4','User0','User1','User2'
     'User3','User4','User0','User1','User2','User3','User4','User0','User1'
     'User2','User3','User4','User0','User1']
B = ['User3', 'User2', 'User4']
contained = (A in B)

然而,我遇到了错误:
ValueError: shape mismatch: objects cannot be broadcast to a single shape

我正在使用numpy,因此任何使用numpy或标准Python的解决方案都是首选。

2个回答

21

我相信你可以使用in1d -

np.in1d(A,B)

6

如果不使用 numpy 进行测试,请尝试以下方法:

contained = [a in B for a in A]

结果:

[False, False, True, True, True, False, False, True, False, False,
 False, True, True, True, False, False, False, True, False, False,
 True, True, True, False, False, True, True, False, False]

1
对于这个小例子来说,这个列表推导式比np.in1d快得多。 - hpaulj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接