Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python可以高效地找到一个坐标数组与另一个坐标数组最接近的值_Python_Numpy_Coordinates - Fatal编程技术网

Python可以高效地找到一个坐标数组与另一个坐标数组最接近的值

Python可以高效地找到一个坐标数组与另一个坐标数组最接近的值,python,numpy,coordinates,Python,Numpy,Coordinates,我有两组数组,我要查找的是array2中与array1中每个值最近的点的索引,例如: 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

我有两组数组,我要查找的是array2中与array1中每个值最近的点的索引,例如:

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)

这段代码返回正确的结果,但当两个数组都非常大时,返回速度很慢。我想知道是否有可能使这更快?

多亏了@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()