здесь первый вопрос. Я постараюсь быть кратким.
Я создаю несколько массивов, содержащих информацию о функциях, для приложения машинного обучения. Поскольку массивы не имеют одинаковых размеров, я храню их в словаре, а не в массиве.Есть два разных типа функций, поэтому я использую два разных словаря.
Я также создаю метки для функций. Эти метки хранятся в массивах. Кроме того, есть строки, содержащие точные параметры, используемые для запуска скрипта, и метку времени.
В целом это выглядит так:
import numpy as np
feature1 = {}
feature2 = {}
label1 = np.array([])
label2 = np.array([])
docString = 'Commands passed to the script were...'
# features look like this:
feature1 = {'case 1': np.array([1, 2, 3, ...]),
'case 2': np.array([2, 1, 3, ...]),
'case 3': np.array([2, 3, 1, ...]),
and so on... }
Теперь моей целью было бы сделать следующее:
np.savez(outputFile,
saveFeature1 = feature1,
saveFeature2 = feature2,
saveLabel1 = label1,
saveLabel2 = label2,
saveString = docString)
Это вроде бы работает (т.е. такой файл сохраняется без выдачи ошибки и может быть загружен снова). Однако, когда я пытаюсь снова загрузить, например, функцию из файла:
loadedArchive = np.load(outFile)
loadedFeature1 = loadedArchive['saveFeature1']
loadedString = loadedArchive['saveString']
Затем вместо возврата словаря я получаю пустой массив формы (0), где я не знаю, как получить доступ к содержимому:
In []: loadedFeature1
Out[]:
array({'case 1': array([1, 2, 3, ...]),
'case 2': array([2, 3, 1, ...]),
..., }, dtype=object)
Кроме того, строки становятся массивами и получают странный тип данных:
In []: loadedString.dtype
Out[]: dtype('|S20')
Короче говоря, я предполагаю, что это не так, как это делается правильно. Однако я бы предпочел не помещать все переменные в один большой словарь, потому что я буду извлекать их в другом процессе и хотел бы просто перебирать словарь.keys(), не беспокоясь о сравнении строк.
Приветствуются любые идеи. Спасибо