如何对numpy的Inf对象进行序列化?
当我尝试把一个在numpy中定义的对象Inf进行序列化时,序列化的过程是成功的,但在加载的时候却失败了:
>>> 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 个回答
-1
试试这个在SourceForge上的解决方案,它可以处理任何Python对象:
y_serial.py模块 :: 使用SQLite存储Python对象
“序列化 + 持久化 :: 只需几行代码,就能把Python对象压缩并注释到SQLite中;然后可以根据关键词按时间顺序检索它们,而不需要任何SQL。这是一个非常有用的‘标准’模块,用于存储没有固定结构的数据。”
5
如果你指定一个大于零的pickle协议,它就会正常工作。协议通常指定为-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.