Python находит наиболее близкие значения массива координат к другому - PullRequest
1 голос
/ 12 апреля 2019

У меня есть два набора массивов, и я ищу индекс ближайшей точки в массиве 2 к каждому значению в массиве1, например:

import numpy as np
from scipy.spatial import distance

array1 = np.array([[1,2,1], [4,2,6]])

array2 = np.array([[0,0,1], [4,5,0], [1,2,0], [6,5,0]])

def f(x):
    return distance.cdist([x], array2 ).argmin()

def array_map(x):
    return np.array(list(map(f, x)))

array_map(array1)

Этот код возвращает правильные результаты, но медленный, когда оба массива очень большие. Мне было интересно, можно ли было сделать это как можно быстрее?

1 Ответ

1 голос
/ 12 апреля 2019

Благодаря @ Max7CD вот работающее решение, которое работает достаточно эффективно (по крайней мере, для моих целей):

from scipy import spatial

tree =spatial.KDTree(array2)

slitArray = np.split(array1, 2) #I split the data so that the KDtree doesn't take for ever and so that I can moniter progress, probably useless

listFinal = []
for elem in slitArray:
    a = tree.query(elem)
    listFinal.append(a[1])
    print("Fnished")

b = np.array(listFinal).ravel()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...