【问题标题】:Convert numpy ndarray to dict but the array has shape () [duplicate]将numpy ndarray转换为dict但数组具有形状()[重复]
【发布时间】:2019-10-31 02:38:05
【问题描述】:

在 Python 3.7 中,Numpy:我使用 numpy 保存并加载了一个字典(就像我在这里已经问过的:Saving a sequence of 3rd-order Tensors and reading it back without losing array format)。

加载它会将其合并为一件大事,我无法再获得单个值。

我使用np.save('filename', dict) 来保存像{(1, 0): 1, (1, 1): 2, (2, 0): 3, (2, 1): 4}loaded_dict = np.load('filename.npy', allow_pickle=True) 这样的字典来加载我需要成为字典的对象。

现在只是尝试做loaded_dict[(1, 0)] 不起作用。实际上: print(loaded_dict.shape) 输出()

工作示例代码:

import numpy as np

example_dict = {(1, 0): 1, (1, 1): 2, (2, 0): 3, (2, 1): 4}
np.save('filename', example_dict)

loaded_dict = np.load('filename.npy', allow_pickle=True)
print(loaded_dict) # Works just fine, prints out the example dict
print(type(loaded_arrs)) # Outputs <class 'numpy.ndarray'>
print(loaded_dict.shape) # Outputs ()
print(loaded_dict[(1, 0)]) # Does not work, Error below

输出:

{(1, 0): 1, (1, 1): 2, (2, 0): 3, (2, 1): 4}
<class 'numpy.ndarray'>
()
IndexError: too many indices for array

我真的只需要按这个顺序排列的数字1, 2, 3, 4。最初我也想使用元组,但仅获取数字(按顺序!)就足够了。

另外:这些数字是原始列表。我将其保留在代码之外以使其更具可读性。要解决多大的问题?如果您只有整数的解决方案,我也可以使用它!

任何帮助将不胜感激。我已经有一个 127 KB 的文件,需要 11 个小时才能制作出来,所以最好我想用我已经拥有的东西制作一些东西。如果这不可能或太复杂,那么我可以重新开始,但只能作为最后的手段。

【问题讨论】:

  • 哦,是的。不知何故,当我搜索它时,它并没有出现,或者我一定忽略了它。对不起。
  • 当 shape 为 () 时,您可以访问带有空元组 loaded_dict[()] 的元素。但是item() 也一样。

标签: python-3.x numpy


【解决方案1】:

loaded_dict 是 numpy.ndarray 不是字典。您可以使用 .item() 方法访问字典,

loaded_dict.item()[(1, 0)]

如果您想访问所有可以使用的字典值,

for key,value in loaded_dict.item().items():
    print(value)

【讨论】:

  • 工作,非常感谢!
猜你喜欢
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2018-07-10
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
相关资源
最近更新 更多