在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个小时来制作,因此,最好是我想用自己已有的东西做一些事情。如果那不可能或太复杂,那么我可以做一个全新的开始,但是只能作为最后的选择。
答案 0 :(得分:1)
loaded_dict是一个numpy.ndarray,而不是字典。您可以使用.item()方法访问字典,
loaded_dict.item()[(1, 0)]
如果要访问所有可以使用的词典值,
for key,value in loaded_dict.item().items():
print(value)