2015-04-04 208 views
2

我想为数组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

为了测试它,而无需使用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] 
+2

这增加了什么'contained'什么'A'在'B'中有'*也*,但不会返回OP所要求的bool。只是一个笔记。 :) – Zizouz212 2015-04-04 22:20:22

+0

@ Zizouz212这一个看起来更好:)谢谢,现在更新... – Selcuk 2015-04-04 22:21:58

+1

对于这个小例子,这个列表理解比'np.in1d'快得多。 – hpaulj 2015-04-05 17:21:44

相关问题