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

标签 python python-2.7 python-3.x matrix distance

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

相关文章:

python - 如何将二维数组拆分为具有唯一值和字典的数组?

Python:导入与函数同名的模块

python - 计算两个列表字典之间的相似性的最有效方法是什么?

python - 如何将嵌套字典呈现为表格

python - 在 google app engine blobstore 下载器中启用 CORS

python - 迭代 Pandas groupby 对象的子集

python - 如何使用 Python 2.7 安装 aggdraw

python - python 中将此列表更改为另一个列表的功能方法

python - GttS 等待单词完整 Python

python - 乒乓球模拟器