Python - 给定 X,Y 点对的库函数找到 Xn, Yn,这是最接近该对的对
Python - Library function that given a X,Y pair of point find Xn, Yn which is the closest pair to that pair
免责声明:我正在寻找一个库或实现此目的的现有函数。类似的问题询问我正在寻找快速实现的基本算法。所以如果这似乎是一个重复的问题,我会道歉,因为我只是在寻找一个黑框答案
给定一对地理坐标点:
[34.232,-119.123]
以及其他点的数组:
[ [36.232,-117.123], [35.232,-119.123], [33.232,-112.123] ]
我正在寻找一个函数,它 return 上面列表中最接近原始坐标的一对
从简单整数编辑为浮点值
每条评论:
from scipy.spatial.distance import cdist
import numpy as np
def closest(point, ref):
dist = cdist(ref, [point])
return ref[np.argmin(dist)]
point = [1,2]
ref = [ [3,1], [4,1], [2,5] ]
closest(point,ref)
# out [3,1]
我的两分钱:
from scipy.spatial.distance import euclidean
from functools import partial
key = partial(euclidean, [1,2])
lst = [[3, 1], [4, 1], [2, 5]]
res = min(lst, key=key)
print(res)
输出
[3, 1]
还有一个:
from sklearn.neighbors import KDTree
import numpy as np
X = np.array([[3,1], [4,1], [2,5]])
tree = KDTree(X, leaf_size=2)
dist, ind = tree.query(np.array([1,2]).reshape(1,-1), k=1)
X[ind][0][0]
# array([3, 1])
对欧氏距离使用 numpy 范数
def fun(x, points):
points = np.array(points)
return points[np.argmin(np.linalg.norm(points-np.array(x), axis=1))]
print (fun([1,2], [[3,1], [4,1], [2,5]]))
print (fun([1,2], [[3,1], [2,1], [2,5]]))
输出:
[3 1]
[2 1]
免责声明:我正在寻找一个库或实现此目的的现有函数。类似的问题询问我正在寻找快速实现的基本算法。所以如果这似乎是一个重复的问题,我会道歉,因为我只是在寻找一个黑框答案
给定一对地理坐标点:
[34.232,-119.123]
以及其他点的数组:
[ [36.232,-117.123], [35.232,-119.123], [33.232,-112.123] ]
我正在寻找一个函数,它 return 上面列表中最接近原始坐标的一对
从简单整数编辑为浮点值
每条评论:
from scipy.spatial.distance import cdist
import numpy as np
def closest(point, ref):
dist = cdist(ref, [point])
return ref[np.argmin(dist)]
point = [1,2]
ref = [ [3,1], [4,1], [2,5] ]
closest(point,ref)
# out [3,1]
我的两分钱:
from scipy.spatial.distance import euclidean
from functools import partial
key = partial(euclidean, [1,2])
lst = [[3, 1], [4, 1], [2, 5]]
res = min(lst, key=key)
print(res)
输出
[3, 1]
还有一个:
from sklearn.neighbors import KDTree
import numpy as np
X = np.array([[3,1], [4,1], [2,5]])
tree = KDTree(X, leaf_size=2)
dist, ind = tree.query(np.array([1,2]).reshape(1,-1), k=1)
X[ind][0][0]
# array([3, 1])
对欧氏距离使用 numpy 范数
def fun(x, points):
points = np.array(points)
return points[np.argmin(np.linalg.norm(points-np.array(x), axis=1))]
print (fun([1,2], [[3,1], [4,1], [2,5]]))
print (fun([1,2], [[3,1], [2,1], [2,5]]))
输出:
[3 1]
[2 1]