python 完全成对距离矩阵的成对距离列表

2uluyalo  于 2023-03-21  发布在  Python
关注(0)|答案(2)|浏览(114)

我找到的所有答案都已经处理了从成对距离列表生成成对距离矩阵的相反问题。假设我有一个完整的成对距离矩阵,格式为:
最后,我需要一个成对距离列表,如:
我该怎么做呢?我还没有找到一个函数来“切片”0 s对角线以上的 Dataframe 。如果你能告诉我这个矩阵的大小有多大,那就太好了?因为原始的距离矩阵大约是100,000 x100,000个元素。
非常非常感谢提前!
我想我可以使用pandas dataframe.stack()函数来获得列表。但在这种情况下,我会得到所有距离的双值,因为矩阵是对称的,我也会得到相等项之间的距离0。

isr3a4wc

isr3a4wc1#

使用numpytriu_indices_from

a = df.to_numpy()
idx, col = np.triu_indices_from(a, k=1)

out = pd.DataFrame({'index': df.index[idx],
                    'columns': df.columns[col],
                    'value': a[idx, col]})

输出:

index columns  value
0      1       2  1.154
1      1       3  1.235
2      1       4  1.297
3      1       5  0.960
4      2       3  0.932
5      2       4  0.929
6      2       5  0.988
7      3       4  0.727
8      3       5  1.244
9      4       5  1.019
yi0zb3m4

yi0zb3m42#

使用numpy

>>> df.values[np.triu_indices(df.shape[0], k=1)]
array([1.154, 1.235, 1.297, 0.96 , 0.932, 0.929, 0.988, 0.727, 1.244,
       1.019])

相关问题