Найти соответствие между двумя массивами координат - PullRequest
3 голосов
/ 03 февраля 2020

У меня есть два больших 2D-массива (3x100,000), соответствующих 3D-координатам, и я хотел бы найти индекс каждого соответствия.

Пример:

mat1 = np.array([[0,0,0],[0,0,0],[0,0,0],[10,11,12],[1,2,3]]).T

mat2 = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]]).T

Так что здесь я нужно получить индексы 3 и 0. И мне нужно найти каждую корреспонденцию примерно на 100000 координат. Есть ли в Python указанная c функция для выполнения этой работы? Подать заявку на l oop может быть проблема

res = [3,0]

Подводя итог, мне нужно:

enter image description here

1 Ответ

3 голосов
/ 03 февраля 2020

Мы можем использовать Cython-powered kd-tree для быстрого поиска ближайшего соседа -

In [77]: from scipy.spatial import cKDTree

In [78]: d,idx = cKDTree(mat2.T).query(mat1.T, k=1)

In [79]: idx[np.isclose(d,0)]
Out[79]: array([3, 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...