Вы можете использовать numpy .intersect1d (a1, a2), а затем документы предоставляют возможность пересекать несколько массивов:
уменьшать (np.intersect1d, ([1, 3, 4 , 3], [3, 1, 2, 1], [6, 3, 4, 2]))
Что я хочу сделать, это найти пересечение между массивом 1D и каждым строка в соответствующем двумерном массиве.
Или лучше , но только COUNT перекрывающихся элементов в каждой строке.
Я знаю, что могу сделать это с помощью intersect1d () и al oop, но это будет слишком медленно .
Как мы можем подсчитать перекрывающиеся элементы в каждом ряду numpy -way ?
Пример:
In [59]: a2 = np.random.choice(np.arange(0,100),(10,5), replace=False)
In [60]: a2
Out[60]:
array([[50, 5, 25, 40, 19], 1
[43, 37, 21, 55, 11], 0
[16, 49, 6, 86, 96], 0
[80, 66, 87, 51, 64], 0
[42, 7, 20, 24, 74], 1
[92, 63, 75, 54, 90], 2
[ 9, 91, 88, 85, 22], 0
[ 4, 65, 97, 93, 53], 0
[18, 0, 57, 71, 76], 0
[94, 1, 77, 89, 45]]) 0
In [61]: a1 = np.random.choice(np.arange(0,100),5, replace=False)
In [63]: a1
Out[63]: array([63, 54, 20, 60, 25])