如何挑选numpy的Inf对象?

时间:2009-08-09 01:45:21

标签: python numpy pickle

当尝试按照numpy(我认为)中的定义来挑选对象Inf时,转储变为Ok但加载失败:

>>> 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 个答案:

答案 0 :(得分: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.

答案 1 :(得分:-1)

在SourceForge上尝试这个解决方案,它适用于任何Python对象:

y_serial.py module ::使用SQLite的仓库Python对象

“序列化+持久性::在几行代码中,将Python对象压缩并注释为SQLite;然后通过关键字按时间顺序检索它们,而不使用任何SQL。最有用的”标准“模块,用于存储无模式数据的数据库。“

http://yserial.sourceforge.net