Python和科学计算认证群组  - 讨论区

标题:请问大家关于搜索的问题

2012年10月18日 星期四 16:46

我有一个数量比较大的坐标点数据

需要不断的提取跟给定点距离最近的坐标值

以前数据量小,可以直接用循环遍历

现在数据量比较大了(需要遍历的数据也多了),

感觉速度明显降低

请问大家,除了遍历以外,还有不有,什么合适的算法

数据为三列(x,y,value)是没有排序的

查询数据(x,y)

之前使用的是

for i in date:

x,y=i

for j in 查询坐标:

x1,y1=j

if distance(x,x1,y,y1):

'write something'

请大家帮忙看看。谢谢

 

2012年10月18日 星期四 18:50

用KDTree,SciPy里面有相关的库:

http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.cKDTree.html#scipy.spatial.cKDTree

 

2012年10月18日 星期四 21:33

所有的二维点把平面分成若干个锐角三角形,你只需要把所有的三角形记录下来,然后,确定给定点在哪个三角形内(或者边上),这样只需要比较给定点和三角形的顶点之间的距离就可以了!

2012年10月20日 星期六 16:23

把数据按X排序得数组Ax

按Y排序得数组Ay

变化成A*路径算法,

有点不同的是每次确定新路径点,都要重新查询新点在另一数组中的索引值

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号