【发布时间】:2020-05-13 10:13:03
【问题描述】:
我有一个列表列表。我想找到所有对与自身之间的欧几里德距离并创建一个 2D numpy 数组。自身之间的距离将在该位置为 0,当对不同时该值。
列表列表示例:[[0, 42908],[1, 3],[1, 69],[1, 11],[0, 1379963888],[0, 1309937401],[0, 1],[0, 3],[0, 3],[0, 77]]
我想要的结果是
0 1 2 3 4 5 6 7 8
0 0 x x x x x x x x
1 0 x x x x x x x
2 0 x x x x x x
3 0 x x x x x
4 .................
5 .................
6 .................
7 .................
8 .................
x 表示差异值。句点表示结果应遵循矩阵中所示的结果。我需要有关 python 代码的帮助。行和列中 0、1、2 等的数量定义了内部列表索引。
【问题讨论】:
-
好的,但“我想做 X”不是问题。请参阅How to Ask。
-
您可以使用https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cdist.html 计算所有对之间的距离。在您的情况下,Xa 和 Xb 将是相同的数据集。
-
这能回答你的问题吗? Fastest pairwise distance metric in python
-
你可以使用 scipy.spatial.distance.pdist 。它将返回一个压缩数组,因为一半的组合是多余的。但是您可以使用 scipy.spatial.distance.squareform 创建完整的方阵。