向量的总欧几里德长度

Total Euclidian length of a vector

给定一组向量点,计算总欧几里得长度(所有点之间的欧几里得 thenthes 之和)的有效方法是什么。我认为:

from scipy.spatial.distance import cdist
import numpy as np
a = np.array([[1, 1], [2, 3], [4, 4]])
length = np.diag(cdist(a, a), 1).sum()

还有更优雅的吗?

使用pdist,原生只保留上三角

from scipy.spatial.distance import pdist
import numpy as np
a = np.array([[1, 1], [2, 3], [4, 4]])
length = pdist(a).sum()

如果Euc(p2-p1)+Euc(p3-p2)是您所追求的,那么您的方法是不正确的。您正在寻找:

length = np.sqrt( ((a[1:]-a[:-1])**2).sum(-1)).sum()