У меня есть массив group
Nx2:
array([[ 1, 6],
[ 1, 0],
[ 2, 1],
...
[40196, 40197],
[40196, 40198],
[40196, 40199]], dtype=uint32)
и другой массив selection
, который равен (M,):
array([3216, 3217, 3218, ... 8039])
Я хочу создать новый массив, содержащий все строки group
, где оба элемента находятся в selection
. Вот как я это сделал:
np.array([(i,j) for (i,j) in group if i in selection and j in selection])
Это работает, но я знаю, что должен быть более эффективный способ, использующий некоторые функции numpy.
Отлично, спасибо! Я сравнил результаты с timeit: ваше решение
4.07 ms ± 197 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
против моего263 ms ± 9.38 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Гораздо быстрее! :)