将numpy矩阵转换成嵌套字典的有效方法

2024-09-29 21:52:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个NumPy2d数组,它是一个对称矩阵(正方形矩阵,其中对角线上方的数字与对角线下方的数字相同)

输入矩阵示例:

edgeMatrix = np.array([[0., 2., 9.],
                       [2., 0., 1.],
                       [9., 1., 0.]])

我正在寻找一种非常有效的方法来将这个大矩阵转换成一个嵌套字典,其中第一个键是矩阵的行索引,第二个dict键是矩阵的列索引。例如:

所需的结果嵌套dict格式:

^{pr2}$

我尝试过使用dict(enumerate(edgeMatrix.flatten(), 1)),但未能找到如何使嵌套方面工作。在


Tags: 方法示例字典格式np矩阵数字数组
3条回答

可以使用嵌套生成器表达式创建嵌套dict。在

import numpy as np

edgeMatrix = np.array(
    [[0., 2., 9.],
    [2., 0., 1.],
    [9., 1., 0.]]
)

edgeDict = dict(enumerate(dict(enumerate(row)) for row in edgeMatrix))
print(edgeDict)

输出

^{pr2}$

试试这个:

In [5]: {i: {j: edgeMatrix[i,j] for (j, _) in enumerate(edgeMatrix[i])} 
for (i, __) in enumerate(edgeMatrix)}

Out[5]: 
{0: {0: 0.0, 1: 2.0, 2: 9.0},
 1: {0: 2.0, 1: 0.0, 2: 1.0},
 2: {0: 9.0, 1: 1.0, 2: 0.0}}

{cd1>它为你做了:

In [38]: pd.DataFrame(a).to_dict()
Out[38]: 
{0: {0: 0.0, 1: 2.0, 2: 9.0},
 1: {0: 2.0, 1: 0.0, 2: 1.0},
 2: {0: 9.0, 1: 1.0, 2: 0.0}}

相关问题 更多 >

    热门问题