【发布时间】:2021-12-24 06:22:36
【问题描述】:
我有一个嵌套字典,我将其转换为一个泡菜文件。泡菜文件可以在here 找到。 打开pickle文件就像thar:
import pickle
resultados_acoes_testvar = pickle.load(open('map_results_modelo_acoes_variandotest.pickle', 'rb'))
该文件是一个字典,具有该结构:
{'amat': {'Test_Size_100': {'raw_0': array([1.39838652e+02, 1.42292998e+02, 1.45314363e+02, 1.49162546e+02....)]}}}
其中“amat”是数据集的名称(它在 dict 中有 9 个数据集),test_size 是我的预测长度(时间序列的预测),raw 是模型(它有 6 个模型在dict) 和 _0 是我运行的时间。我运行每个模型 10 次(0 到 9)。
我想为 test_size 和每个模型获得一个时间序列,以及我运行每个模型的 9 次的平均值。
我正在尝试这样做:
resultado = {}
lista_modelos = ['raw','difference', 'logaritmica', 'box_cox', 'mas', 'pct']
for acao in resultados_acoes_testvar_transformadas.keys():
resultado[acao] = {}
for testsize in resultados_acoes_testvar_transformadas[acao].keys():
resultado[acao][testsize] = {}
for values in resultados_acoes_testvar_transformadas[acao][testsize].keys():
for prefix in lista_modelos:
resultado[acao][testsize][prefix] = []
for a, b, c, d, e, f, g, h, i, j in zip(values[prefix + '_0'],values[prefix+'_1'],values[prefix+'_2'],values[prefix+'_3'],values[prefix+'_4'],values[prefix+'_5'],values[prefix+'_6'],values[prefix+'_7'],values[prefix+'_8'],values[prefix+'_9']):
mean = float((a+b+c+d+e+f+g+h+i+j)/10)
resultado[acao][testsize][prefix].append(mean)
但我遇到了一个错误:
TypeError Traceback (most recent call last)
<ipython-input-59-80ef15c9251e> in <module>
19
20
---> 21 for a, b, c, d, e, f, g, h, i, j in zip(values[prefix + '_0'],values[prefix+'_1'],values[prefix+'_2'],values[prefix+'_3'],values[prefix+'_4'],values[prefix+'_5'],values[prefix+'_6'],values[prefix+'_7'],values[prefix+'_8'],values[prefix+'_9']):
22
23 mean = float((a+b+c+d+e+f+g+h+i+j)/10)
TypeError: string indices must be integers
感谢您的帮助。
【问题讨论】:
-
可以分享更大的样本吗?
-
尝试打印变量值,它可能是一个字符串
-
一本很大的字典,我把下载pickle文件的链接放在了github上。
-
哪一行导致错误?请包含完整的错误消息。
-
@Code-Apprentice ,完成,对不起。
标签: python numpy dictionary time-series mean