私は何百万という行のデータフレーム 'data'を持っています。各行には座標( 'x'、 'y')があり、Pythonが提供する最も効率的な方法で連続した座標のペア間の距離を計算したいと思います。並列化はここで助けますか?Pythonコードで2つのポイント間の距離を計算するための並列化の最速方法
ここでは、cythonを使用することを示唆しています。しかし、私はPythonのソリューションだけを見たいと思います。ここで
は、私がforループ使用して私の最初のアプローチは確実に向上させることができると信じている私のデータのスニペット
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)]
です:
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)
は、事前にあなたの答えをありがとうございました。ここで
。ただし、並列化はできません(ただし、CPUなどに最適化されている可能性があります)。 – Evert
マルチプロセッシングのルートを下る場合は、大きなリストをチャンクに分割し、それらを処理して最後にマージする必要があります – kezzos
パフォーマンスが向上すると思いますか? –