2015-10-15 3 views
0

Я пытаюсь сохранить словари в потоке, чтобы позже его можно было загрузить. Проблема в том, что когда я печатаю словарь с массивом numpy внутри, он печатает со строкой «массив» перед массивом numpy. Пример:Python: печать словаря с массивом numpy внутри

import numpy as np 
import pprint 

a = {"hi":"greeting","celeryman":np.array([4,3,3])} 

print(a) 

pprint.pprint(a) 

выше производит выходной сигнал

{'celeryman': array([4, 3, 3]), 'hi': 'greeting'} 
{'celeryman': array([4, 3, 3]), 'hi': 'greeting'} 

Нужный выход

{'celeryman': [4, 3, 3], 'hi': 'greeting'} 

, который я надеюсь, может быть считана без проблем с помощью json.load.

Должен ли я писать для этого свой собственный принтер?

+0

Я знаю, как загрузить нужный вывод в python, а не в строку с массивом. –

+0

Вы говорите, что проблема json - это проблема или форматирование? Если вы хотите сохранить только маринование, которое может обрабатывать массив numpy просто отлично –

+0

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

ответ

0

вам придется назначить Numpy массива в списке каждого конкретного

a = {"hi":"greeting","celeryman":list(np.array([4,3,3]))} 

и если вы снова хотите инициализировать список прилагается в качестве значения ключа «celeryman» как Numpy массив

тогдашнего
a=json.load('yourfile.json') 
newnplist=np.array(a['celeryman'])