2015-04-04 199 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

相關問題