Skip to main content
 首页 » 编程设计

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

2025年05月04日13落叶

您好,我想构建一个大小为 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.]])