使用Numpy存字典类型文件时再调用改文件时可能出现的问题

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

没错没错!就是这个问题卡了我一个小时,我真的是无语了,理解原理一个小时,写代码一个小时,查bug查了一个小时:写下这个问题提醒自己

不要小瞧这个问题,我在运用HMM模型进行拼音转汉字的时候,它没有报错,但最后的输出真的痛彻我心扉。一个句子翻译的乱七八糟的,精度0.1都不到,最好的一个0.25

下面是我们的解决办法:
loaded_dict是一个numpy.ndarray,而不是字典。我们可以使用.item()方法访问字典,

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

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

for key,value in loaded_dict.item().items():
    print(value)
posted @ 2023-03-02 16:37  积分要加c  阅读(27)  评论(0)    收藏  举报