您好,我想构建一个大小为 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
谢谢。
最佳答案
如果您正在使用 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.]])
关于Python:如何从一行值创建一个完整的距离矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29813135/