更新1:
以下是
上面的
三角形距离矩阵(因为距离矩阵总是对称的,所以这并不重要):
from itertools import combinations
res = {tup[0]:tup[1] for tup in zip(pdist(points), list(combinations(range(len(points)), 2)))}
结果:
In [111]: res
Out[111]:
{1.4142135623730951: (0, 1),
4.69041575982343: (0, 2),
4.898979485566356: (1, 2)}
更新2:
此版本将支持远距离复制:
In [164]: import pandas as pd
首先我们建造一只熊猫。系列:
In [165]: s = pd.Series(list(combinations(range(len(points)), 2)), index=pdist(points))
In [166]: s
Out[166]:
2.0 (0, 1)
6.0 (0, 2)
12.0 (0, 3)
4.0 (1, 2)
10.0 (1, 3)
6.0 (2, 3)
dtype: object
现在我们可以按索引分组并生成坐标列表:
In [167]: s.groupby(s.index).apply(list)
Out[167]:
2.0 [(0, 1)]
4.0 [(1, 2)]
6.0 [(0, 2), (2, 3)]
10.0 [(1, 3)]
12.0 [(0, 3)]
dtype: object
ps这里的主要思想是,如果要在之后将其展平并消除重复项,就不应该构建平方距离矩阵。