Как засолить объекты Inf от numpy? - PullRequest
3 голосов
/ 09 августа 2009

При попытке засечь объект Inf, как определено в numpy (я думаю), дамп идет нормально, но загрузка завершается неудачно:

>>> cPickle.dump(Inf, file("c:/temp/a.pcl",'wb'))
>>> cPickle.load(file("c:/temp/a.pcl",'rb'))
Traceback (most recent call last):
  File "<pyshell#257>", line 1, in <module>
    cPickle.load(file("c:/temp/a.pcl",'rb'))
ValueError: could not convert string to float
>>> type(Inf)
<type 'float'>

Почему это? И более того - есть ли способ это исправить? Я хочу засолить что-то, в котором есть Inf - его замена на что-то другое испортит элегантность программы ...

Спасибо

Ответы [ 2 ]

5 голосов
/ 09 августа 2009

Если вы укажете протокол рассола больше нуля, он будет работать. Протокол часто указывается как -1, что означает использование самого последнего и самого лучшего протокола:

>>> cPickle.dump(Inf, file("c:/temp/a.pcl",'wb'), -1)
>>> cPickle.load(file("c:/temp/a.pcl",'rb'))
1.#INF                   -- may be platform dependent what prints here.
0 голосов
/ 13 сентября 2009

Попробуйте это решение на SourceForge, которое будет работать для любого произвольного объекта Python:

модуль y_serial.py :: хранилище объектов Python с SQLite

"Сериализация + постоянство :: в несколько строк кода сжимают и аннотируют объекты Python в SQLite, а затем извлекают их в хронологическом порядке по ключевым словам без какого-либо SQL. Наиболее полезный" стандартный "модуль для базы данных для хранения данных без схемы . "

http://yserial.sourceforge.net

...