2016-11-08 4 views
0

Привет У меня есть проблема, когда я попытался сериализация массива с питоном, Я имею словарьКак сериализовать массив в python, используя pickle?

d={} 
d['data']= [array([2, 5, 3], dtype=uint8), array([4, 1, 9], dtype=uint8)] 

но моя ошибка:

'array' is not defined 

так, у меня есть 2 вопроса:

1.- как я могу сделать массив типа:

array([2, 5, 3],[4, 1, 9], dtype=uint8) 

для создания массива я использую

append() 

и как я могу сериализовать словарь с формой массива (вопрос 1) с помощью следующей функции

with open('outp', 'wb') as fo: 
    pickle.dump(d, fo, 2) 

Если удалить слова «массив» и 'dtype = uint8' у него нет ошибок, но я думаю, что это неправильная форма для сериализации массива Спасибо

+1

'от numpy import array' – donkopotamus

ответ

0

Если удалить слова «массив» и «DTYPE = uint8» не имеют ошибок

Это обусловлено без этих слов, то вы просто создать список, который может быть сброшен на рассоле действительно ,

Однако array вы упоминаете как массив numpy, вы можете просто добавить from numpy import array в начале вашего скрипта.

Кроме того, вы не можете сделать это array([2, 5, 3],[4, 1, 9]), поскольку 2 одномерный массив с NumPy создается следующим образом: array([[2, 5, 3],[4, 1, 9]])

то, как только у вас есть массив, который вы можете сбросить его, как это:

import pickle 
import numpy as np 
d={} 
d['data']= [np.array([2, 5, 3], dtype=np.int8), np.array([4, 1, 9], dtype=np.int8)] 
with open('outp', 'wb') as fo: 
    pickle.dump(d, fo, 2) 
0

1) Согласно документам Numpy, для этого существует встроенный метод. Проверьте ndarray.dump.

2) Согласно this entry вы можете обернуть словарь в объект и сохранить его.

Смежные вопросы