我有一长串经度值 (len(Lon) = 420481) 和另一个纬度值。我想找到经度最小值对应的纬度。
I tried:
SE_Lat = [Lat[x] for x,y in enumerate(Lon) if y == min(Lon)]
但这需要很长时间才能完成。
有谁知道更有效的方法吗?
也许您对此也有建议:
我现在尝试找到与新经度最接近的对应纬度,该纬度不在原始经度向量中。我试过这个:
minDiff = [min(abs(x - lon_new) for x in lons)] # not very quick, but works
[(lat,lon) for lat,lon in izip(lats,lons) if abs(lon-lon_new)==minDiff]
最后一行会抛出错误,因为有多个匹配项。我目前不知道如何只找到一个值,比如说第一个值。任何帮助是极大的赞赏!
我可以推荐 numpy 吗?
import numpy
nplats = numpy.array(lats)
nplons = numpy.array(lons)
# this part is 20x faster than using the built-in python functions
index = numpy.argmin(nplats)
print nplats[index], nplons[index]
这比 min(izip()) 解决方案快得多(使用 420481 条随机创建的记录时,使用我的设置大约 20 倍),尽管当然您需要将数据值存储在 numpy 中才能利用这种加速。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)