将 2D numpy.ndarray 转换为嵌套字典

Nic*_*las 3 python dictionary numpy type-conversion multidimensional-array

假设我有以下内容numpy.ndarray

array([[50,  0,  0],
      [ 0,  3, 47],
      [ 0, 36, 14]])
Run Code Online (Sandbox Code Playgroud)

如何将其转换为这种形式的字典:

{0: {0: 50}, 1: {1: 3, 2: 47}, 2: {1: 36, 2: 14}}
Run Code Online (Sandbox Code Playgroud)

这个问题类似于python 2d array to dict,但无论我多么努力地尝试,我都无法找到类似于那里的答案的解决方案。

Rah*_*K P 5

假设a为您的阵列,

尝试这个,

{index:{i:j for i,j in enumerate(k) if j} for index,k in enumerate(a)}
Run Code Online (Sandbox Code Playgroud)

结果

{0: {0: 50}, 1: {1: 3, 2: 47}, 2: {1: 36, 2: 14}}
Run Code Online (Sandbox Code Playgroud)

用这个概念创建的字典:

In [18]: dict([[1,'a'],[2,'b']])
Out[18]: {1: 'a', 2: 'b'}
Run Code Online (Sandbox Code Playgroud)

  • 使用字典理解 IMO 会更易读:`{index:{i:j for i,j in enumerate(k) if j} for index,k in enumerate(a)}` (3认同)