微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[pandas]有没有办法更快或更简单地计算累积旅行距离

如何解决[pandas]有没有办法更快或更简单地计算累积旅行距离

我正在尝试加速我的代码

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

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)

如上所示,我有 2 个列表(或熊猫系列),它们是 X、Y 姿势列表。我想计算累计行驶距离。

我认为如果长度更大,由于 for 迭代,使用上面的 Pandas 计算会更慢。

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

解决方法

试试矢量化的 Pandas 函数:

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

您可以使用另一个包 modin.pandas 它比 pandas 快约 x4 并且它具有一些功能。这个包使用并行处理。

 import modin.pandas as pd

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?