用numpy法计算阵列连续点间的欧氏距离

2024-05-21 04:23:03 发布

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

我有一个数组,它描述了折线(连接直线段的有序列表),如下所示:

points = ((0,0),
          (1,2),
          (3,4),
          (6,5),
          (10,3),
          (15,4))
points = numpy.array(points, dtype=float)

目前,我使用以下循环获得线束段距离的列表:

^{pr2}$

相反,我希望使用一些本机Scipy/Numpy函数应用一个不带循环的函数调用。在

我能得到的最接近的信息是:

from scipy.spatial.distance import pdist
segdists = pdist(points, metric='euclidean')

但是在后面的例子中,segdists提供了每个距离,我只想得到相邻行之间的距离。在

另外,我宁愿避免创建自定义函数(因为我已经有了一个有效的解决方案),而是使用更多的本机函数的“numpythonic”用法。在


Tags: 函数numpy距离数组floatarray折线points
1条回答
网友
1楼 · 发布于 2024-05-21 04:23:03

有一种方法:

使用矢量化^{}计算增量:

d = np.diff(points, axis=0)

然后使用^{}计算长度:

^{2}$

或者使用更显式的计算:

segdists = np.sqrt((d ** 2).sum(axis=1))

相关问题 更多 >