我拥有数百万行的数据框'data'。每行都有坐标('x','y'),我想用python可以提供的最有效的方式计算连续坐标对之间的距离。并行化在这里会有帮助吗?使用Python代码并行化计算两点之间距离的最快方法
我在这里看到了一些建议使用cython的方法。不过,我想只看到python解决方案。
这里是我的数据
points =
[(26406, -6869),
(27679, -221),
(27679, -221),
(26416, -6156),
(26679, -578),
(26679, -580),
(27813, -558),
(26254, -1097),
(26679, -580),
(27813, -558),
(28258, -893),
(26253, -1098),
(26678, -581),
(27811, -558),
(28259, -893),
(26252, -1098),
(27230, -481),
(26679, -582),
(27488, -5849),
(27811, -558),
(28259, -893),
(26250, -1099),
(27228, -481),
(26679, -582),
(27488, -5847),
(28525, -1465),
(27811, -558),
(28259, -892)]
的片段我相信用我的第一种方法的for循环,可以明显的改善:
from scipy.spatial import distance
def comp_dist(points):
size =len(points)
d = 0
i=1
for i in range(1,size):
if i%1000000==0:
print i
# print "i-1:", points[i-1]
# print "i: ", points[i]
dist = distance.euclidean(points[i-1],points[i])
d= d+dist
print d
distance = comp_dist(points)
谢谢你的答案提前。
使用numpy的会比当前解决方案更快,更方便了很多比用Cython实现。但它不会给你并行化(但它可能会针对你的CPU进行优化)。 – Evert
如果您打算继续使用多处理路径,您需要将大列表分成块,处理这些块,然后在末尾合并它们 – kezzos
您认为这会提高性能吗? –