我有两个向量,比方说x=[2,4,6,7]
和y=[2,6,7,8]
我希望在每个对应的对之间找到欧几里德距离或任何其他实现距离(例如来自scipy)。那将是
dist=[0, 2, 1, 1]
。
当我尝试
时dist = scipy.spatial.distance.cdist(x,y, metric='sqeuclidean')
或
dist = [scipy.spatial.distance.cdist(x,y, metric='sqeuclidean') for x,y in zip(x,y)]
我得到了
ValueError: XA must be a 2-dimensional array.
我应该如何计算dist,为什么我必须为此目的重塑数据?
答案 0 :(得分:0)
cdist不计算相应对之间的距离列表,而是计算所有对之间的距离矩阵。
np.linalg.norm((np.asarray(x)-np.asarray(y))[:, None], axis=1)
对于n维点之间的欧几里德距离,id通常如何写这个;但如果你只处理1维点,那么elpres建议的绝对差异会更简单。