Numpy: маска элементов в массиве1, которые также являются элементами массива2 - PullRequest
1 голос
/ 13 февраля 2020

Интересно, существует ли numpy естественный способ создания двоичной маски над массивом1 для элементов, которые также находятся в массиве2. Еще один способ сказать это, бинарная маска над массивом1 для пересечения массивов1 и 2.

Это работает:

def bin_mask(a, b):
    return sum(a==n for n in b)

a = np.array([1,2,3,4,5,6,7,8,9,20])
b = np.array([3,5,7])

In: bin_mask(a,b)
Out: array([0, 0, 1, 0, 1, 0, 1, 0, 0, 0])  

Но мне интересно, если есть какой-то предварительно настроенный numpy, которого мне не хватает.

Редактировать: Правильный ответ из комментариев: np.isin (a, b). Я также пометил in1d как правильный ответ. Оба работают.

1 Ответ

1 голос
/ 13 февраля 2020

in1d метод тоже помогает:

>>> np.in1d(a,b)
array([False, False,  True, False,  True, False,  True, False, False, False])
>>> np.in1d(a,b).astype(int)    
array([0, 0, 1, 0, 1, 0, 1, 0, 0, 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...