python 如何从 scipy 压缩距离矩阵中得到合适的距离值
python how to get proper distance value out of scipy condensed distance matrix
我正在使用 python 2.7 和 scipy 来计算数组的距离矩阵。
我不知道如何在返回的压缩矩阵中找到所需的距离值。
查看示例
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,1
0,2
0,3
0,4
1,2
1,3
1,4
2,3
2,4
) 并生成这些数组条目处的元素之间的距离。
还有squareform函数,可以将压缩形式转化为方阵形式(反之亦然)。方阵形式正是您所期望的,即在第 ij 个条目(第 i 行,第 j 列)处,它存储第 i 个和第 j 个条目之间的距离。例如,如果您在代码末尾添加 print squareform(d)
,则输出将为:
array([[ 0., 3., 1., 4.],
[ 3., 0., 4., 1.],
[ 1., 4., 0., 5.],
[ 4., 1., 5., 0.]])
我正在使用 python 2.7 和 scipy 来计算数组的距离矩阵。
我不知道如何在返回的压缩矩阵中找到所需的距离值。
查看示例
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,1
0,2
0,3
0,4
1,2
1,3
1,4
2,3
2,4
) 并生成这些数组条目处的元素之间的距离。
还有squareform函数,可以将压缩形式转化为方阵形式(反之亦然)。方阵形式正是您所期望的,即在第 ij 个条目(第 i 行,第 j 列)处,它存储第 i 个和第 j 个条目之间的距离。例如,如果您在代码末尾添加 print squareform(d)
,则输出将为:
array([[ 0., 3., 1., 4.],
[ 3., 0., 4., 1.],
[ 1., 4., 0., 5.],
[ 4., 1., 5., 0.]])