gpt4 book ai didi

距离大于零的Python KD树最近邻

转载 作者:行者123 更新时间:2023-12-05 06:45:20 33 4
gpt4 key购买 nike

我正在尝试对 Lat 和 Lon 数据实现最近邻搜索。这是Data.txt

61.3000183105 -21.2500038147 0
62.299987793 -23.750005722 1
66.3000488281 -28.7500038147 2
40.8000183105 -18.250005722 3
71.8000183105 -35.7500038147 3
39.3000183105 -19.7500019073 4
39.8000183105 -20.7500038147 5
41.3000183105 -20.7500038147 6

问题是,当我想为数据集上的每个纬度和经度做最近邻时,它会自行搜索。例如 (-21.2500038147,61.3000183105) 的最近邻将是 (-21.2500038147,61.3000183105),结果距离将为 0.0。我试图避免这种情况但没有运气。我尝试做 if not (array_equal) 但仍然...

下面是我的python代码

import numpy as np
from numpy import *
import decimal
from scipy import spatial
from scipy.spatial import KDTree
from math import radians,cos,sin,sqrt,exp


Lat =[]
Lon =[]
Day =[]

nja = []


Data = np.loadtxt('Data.txt',delimiter=" ")
for i in range(0,len(Data)):
Lon.append(Data[i][:][0])
Lat.append(Data[i][:][1])
Day.append(Data[i][:][2])

tree =spatial.KDTree(zip(Lon,Lat) )

print "Lon :",len(Lon)
print "Tree :",len(tree.data)

for i in range(0,len(tree.data)):
pts = np.array([tree.data[i][0],tree.data[i][1]])
nja.append(pts)

for i in range(0, len(nja)):
if not (np.array_equal(nja,tree.data)):
nearest = tree.query(pts,k=1,distance_upper_bound =9)
print nearest

最佳答案

对于数据集中的每个点 P[i],您在问“我的数据集中最接近 P[i] 的点是什么?”你会得到答案“它是 P[i]”。

如果你问一个不同的问题,“哪两个点最接近 P[i]?”,即 tree.query(pts,k=2) (与您的代码的区别是 s/k=1/k=2/)你会得到 P[i] 和一个 P[j],第二个最近的点,这就是你想要的结果。

旁注:

  • 我建议您在构建树之前投影您的数据,因为在您的纬度范围内,经度 1 度的距离意味着很大的波动。

关于距离大于零的Python KD树最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24850133/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com