我正在使用带有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?我在寻找哪个指数?
谢谢!
答案 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)