将numpy ndarray转换为dict,但数组的形状为()

时间:2019-06-17 13:29:30

标签: python-3.x numpy

在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个小时来制作,因此,最好是我想用自己已有的东西做一些事情。如果那不可能或太复杂,那么我可以做一个全新的开始,但是只能作为最后的选择。

1 个答案:

答案 0 :(得分:1)

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

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

如果要访问所有可以使用的词典值,

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