【发布时间】:2015-06-13 18:54:06
【问题描述】:
给定一个具有理想 x,y 位置的字典,我有一个接近理想位置的无序真实 x,y 位置列表,我需要将它们分类到相应的理想位置字典键。有时,对于给定位置,我根本没有得到任何数据 (0,0)。 一个示例数据集是:
idealLoc= {1:(907,1026),
2:(892,1152),
3:(921,1364),
4:(969,1020),
5:(949,1220),
6:(951,1404),
'No_Data':(0,0)}
realLoc = [[ 892., 1152.],
[ 969., 1021.],
[ 906., 1026.],
[ 949., 1220.],
[ 951., 1404.],
[ 0., 0.]]
输出将是一个新字典,其真实位置分配给来自idealLoc 的正确字典键。我已经考虑过蛮力方法(为每个最佳匹配扫描整个列表 n 次),但我想知道是否有更优雅/更有效的方法?
编辑:下面是“蛮力”方法
Dest = {}
dp = 6
for (y,x) in realLoc:
for key, (r,c) in idealLoc.items():
if x > c-dp and x < c+dp and y > r-dp and y < r+dp:
Dest[key] = [y,x]
break
【问题讨论】:
-
你看过itertools.starmap吗?它不会很快,但是您可以编写映射函数来计算真实坐标和理想坐标之间的距离并返回最接近理想坐标的键。
标签: python numpy classification