Как сохранить словари и массивы в одном архиве (с numpy.savez)

здесь первый вопрос. Я постараюсь быть кратким.

Я создаю несколько массивов, содержащих информацию о функциях, для приложения машинного обучения. Поскольку массивы не имеют одинаковых размеров, я храню их в словаре, а не в массиве.Есть два разных типа функций, поэтому я использую два разных словаря.

Я также создаю метки для функций. Эти метки хранятся в массивах. Кроме того, есть строки, содержащие точные параметры, используемые для запуска скрипта, и метку времени.

В целом это выглядит так:

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(), не беспокоясь о сравнении строк.

Приветствуются любые идеи. Спасибо

13
задан surchs 9 April 2012 в 15:35
поделиться