Вам просто нужно было нарезать второй столбик arr1
, сохраняя размеры. Один из способов сделать это - увеличить dim на np.newaxis/None
после нарезки (что уменьшает dims), следовательно -
np.argwhere(arr2[arr1[:, 0], :] == arr1[:, 1, None])
Для компактного вида пропустите индексирование в конце двоеточия -
np.argwhere(arr2[arr1[:,0]] == arr1[:,1,None])
Более компактный способ, но тот, который заставляет копировать второй столбец arr1
-
np.argwhere(arr2[arr1[:,0]] == arr1[:,[1]])
Обратите внимание, что np.argwhere
дает нам (row,col)
пар в массиве из двух столбцов. С вашим решением на основе l oop вы в основном извлекаете индексы col. Итак, используйте второй столбец вывода из размещенного кода.