python如何从scipy浓缩距离矩阵中获得适当的距离值

时间:2017-06-05 06:42:25

标签: python python-2.7 scipy distance pdist

我正在使用带有scipy的python 2.7来计算数组的距离矩阵。

我不知道如何在返回的压缩矩阵中找到想要的距离值。

参见示例

from scipy.spatial.distance import pdist
import numpy as np

a = np.array([[1],[4],[0],[5]])
print a
print pdist(a)

将打印

[ 3.  1.  4.  4.  1.  5.]

我发现here凝聚矩阵中的ij条目应存储i和j条目之间的距离,其中ithread想知道它们是否意味着ij为i * j或str.join(i,j),例如1 ,2 - > 2或12.

我找不到一致的方法来了解通缉索引。

请参阅我的示例,如果第一个选项有效,您应该预期从条目0到其他任何地方的所有距离都将存储在条目0中。

任何人都可以了解如何从入口x提取我想要的距离到入口y?我在寻找哪个指数?

谢谢!

1 个答案:

答案 0 :(得分:2)

此载体为浓缩形式。它按自然顺序枚举所有索引对(在您的示例中0,1 0,2 0,3 0,4 1,2 1,3 1,4 { {1}} 2,3)并生成这些数组条目的元素之间的距离。

还有squareform函数,它将浓缩形式转换为方形矩阵形式(反之亦然)。方形矩阵形式正是您所期望的,即在条目ij(第i行,第j列)处,它存储第i个和第j个条目之间的距离。例如,如果在代码末尾添加2,4,则输出为:

print squareform(d)