微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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']}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐