向量的总欧几里德长度
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()
给定一组向量点,计算总欧几里得长度(所有点之间的欧几里得 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()