Python:如何从一行值创建一个完整的距离矩阵?

All*_*son 1 python distance matrix python-2.7 python-3.x

嗨,我想构建一个尺寸为10 x 10的距离矩阵,并生成了一个包含45个实数的值列表,以填充10 x 10矩阵。距离矩阵也称为对称矩阵,它是矩阵另一面的镜像。我目前的情况是我有45个值,我想知道如何创建距离矩阵,对角线部分填充0,并创建镜像矩阵以形成完整的距离矩阵。

例如,
1,2,4,3,5,6

输出:
0,1,2,4
1,0,3,5
2,3,0,6
4,5,6,0

感谢。

use*_*ica 5

如果您使用的是NumPy,这将是的完美选择numpy.triu_indices,它会返回一对索引矩阵,适合选择矩阵的上三角。第一个参数是矩阵的边长,第二个参数是从哪个对角线开始:

In [1]: import numpy

In [2]: x = numpy.zeros([4, 4]) # 4x4 array of zeros

In [3]: x[numpy.triu_indices(4, 1)] = [1, 2, 4, 3, 5, 6]

In [4]: x
Out[4]: 
array([[ 0.,  1.,  2.,  4.],
       [ 0.,  0.,  3.,  5.],
       [ 0.,  0.,  0.,  6.],
       [ 0.,  0.,  0.,  0.]])

In [5]: x += x.T

In [6]: x
Out[6]: 
array([[ 0.,  1.,  2.,  4.],
       [ 1.,  0.,  3.,  5.],
       [ 2.,  3.,  0.,  6.],
       [ 4.,  5.,  6.,  0.]])
Run Code Online (Sandbox Code Playgroud)