2015-04-04 3 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', но не возвращает bool, как запросил OP. Просто записка. :) – Zizouz212

+0

@ Zizouz212 Это выглядело лучше :) Спасибо, теперь обновлено ... – Selcuk

+1

Для этого небольшого примера это понимание списка значительно быстрее, чем 'np.in1d'. – hpaulj

Смежные вопросы