python – pandas:将距离矩阵转换为字典,其元素按邻近度排序

我有矩阵,每个点之间的距离

Points   1    2    3  ..  n
1        0   2.4  1.6 ..  7.8 
2       2.4   0   4.9 ..  0.8 
3       1.6  4.9   0  ..  2.7
..      .....................
n       7.8  ..    ..  ..  0

我需要获取带有点作为键的字典,并将点列表作为值按接近度排序.

Dictionary: 
{
   1: [3,2,..,n],
   2: [n,..,1,3],
   3: [1,n,..,2],
   ..
}

我应该迭代矩阵并对每一行进行排序,然后在字典中插入元素,但是为此存在一种优雅的方式.

解决方法:

演示:

In [79]: d
Out[79]:
     1    2    3
1  0.0  2.4  1.6
2  2.4  0.0  4.9
3  1.6  4.9  0.0

DF显示按接近度排序的点的索引/标签(距离自身的距离 – 第0列已被删除):

In [80]: pd.DataFrame(np.take(d.columns, np.argsort(d, axis=1).iloc[:, 1:]).T, index=d.index)
Out[80]:
   0  1
1  3  2
2  1  3
3  1  2

想要的字典:

In [81]: (pd.DataFrame(np.take(d.columns, np.argsort(d, axis=1).iloc[:, 1:]).T, index=d.index)
            .T.to_dict('l'))
Out[81]: {1: ['3', '2'], 2: ['1', '3'], 3: ['1', '2']}

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...