Не уверен насчет эффективности, но, учитывая, что вы в основном сравниваете пары координат, вы можете использовать scipy
функции расстояния. Что-то вместе:
from scipy.spatial.distance import cdist
c = np.stack(coords).T
i = np.stack(index).T
d = cdist(c, i)
In [113]: np.any(d == 0, axis=1).astype(int)
Out[113]:
array([1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1])
По умолчанию он использует норму L2, возможно, вы могли бы сделать это немного быстрее с помощью более простой функции расстояния, например ::
d = cdist(c,i, lambda u, v: np.all(np.equal(u,v)))
np.any(d != 0, axis=1).astype(int)