[Pandas]是否有更快或更简单的计算累计旅行距离的方法

2024-09-30 08:20:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图加快我的代码

这是我的示例代码。(实际代码更复杂

import pandas as pd
import time, math, random

length=10000
x = [random.randint(0,100) for _ in range(length)]
y = [random.randint(0,100) for _ in range(length)]
x_pd = pd.Series(data=x)
y_pd = pd.Series(data=y)
print(x)
print(y)
print(x_pd)
print(y_pd)

distance= 0
distance2= 0
t = time.time()
for k in range(1, len(x)):
    distance += math.sqrt((x[k] - x[k-1])**2 + (y[k] - y[k-1])**2)
print("dist from list : %lf"% distance)
print("duration for compute moving distance = ", time.time()-t)
            
# compute by rolling
t = time.time()
for k in range(1, len(x_pd)):
    distance2 += math.sqrt((x_pd[k] - x_pd[k-1])**2 + (y_pd[k] - y_pd[k-1])**2)
print("dist from pd.Series : %lf"% distance2)
print("duration for compute moving distance = ", time.time()-t)

正如你们在上面看到的,我有两个列表(或熊猫系列),它们是X,Y姿势列表。我想计算累计旅行距离

我认为如果长度更大,使用上面的熊猫计算会更慢,因为需要迭代

有没有比我想象的更快或更简单的计算方法? 谢谢大家!


Tags: 代码inimportfortimerangerandommath
2条回答

您可以使用另一个包modin.pandas,它大约比pandas快4倍,并且它有一些函数。这个包使用并行处理

 import modin.pandas as pd

尝试矢量化的功能:

((x_pd.diff()**2 + y_pd.diff()**2)**.5).sum()

相关问题 更多 >

    热门问题