【发布时间】:2020-09-20 10:01:45
【问题描述】:
我有一个问题,即有效计算所有对 i
我有一个轨迹列表 tr,以 numpy 数组的形式,其中一行包含纬度和经度。两条轨迹 tri 和 trj 之间的距离是 DFD(离散 Frechet 距离)。我找到了一个实现here,但如果有更高效的版本,非常欢迎提出建议。
import numpy
import pandas
import time
import traj_dist.distance as td
m=10; n=1000;
tr=[numpy.concatenate([180*numpy.random.random_sample((n-i,1))-90,
360*numpy.random.random_sample((n-i,1))-180],axis=1) for i in range(m)]
t0=time.perf_counter();
dd=[td.discret_frechet(tr[i],tr[j]) for i in range(n) for j in range(i+1,m)];
t1=time.perf_counter(); print(t1-t0)
dd=td.pdist(tr,metric="discret_frechet")
t2=time.perf_counter(); print(t2-t1)
对于 m=10 和 n=10000,代码已经太慢了。有没有办法并行化或矢量化?另外,是否有使用点之间的半正弦距离的 DFD 实现?
【问题讨论】:
标签: pandas performance parallel-processing vectorization processing-efficiency