Вот один из способов использования broadcasting
:
(coo[:,None] == targets).all(2).any(1)
# array([False, True, True, False])
Подробности
Проверка для каждой строки в coo
совпадает ли он с другим в target
путем прямого сравнения, добавив первую ось к coo
, чтобы она стала транслируемой против targets
:
(coo[:,None] == targets)
array([[[False, False],
[ True, False]],
[[False, False],
[ True, True]],
[[ True, True],
[False, False]],
[[False, False],
[False, True]]])
Затем проверьте, какие ndarrays
вдольвторая ось имеет значения all
до True
:
(coo[:,None] == targets).all(2)
array([[False, False],
[False, True],
[ True, False],
[False, False]])
И, наконец, используйте any
, чтобы проверить, какие строки имеют хотя бы одну True
.