【问题标题】:How to pickle numpy's Inf objects?如何腌制numpy的Inf对象?
【发布时间】:2009-08-09 01:45:21
【问题描述】:

当尝试腌制 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 的东西 - 将其更改为其他东西会破坏程序的优雅......

谢谢

【问题讨论】:

    标签: python numpy pickle


    【解决方案1】:

    如果您指定大于零的 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.
    

    【讨论】:

      【解决方案2】:

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

      y_serial.py 模块 :: 使用 SQLite 存储 Python 对象

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

      http://yserial.sourceforge.net

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-16
        • 2020-09-01
        • 1970-01-01
        • 2019-01-21
        • 1970-01-01
        • 1970-01-01
        • 2015-08-24
        相关资源
        最近更新 更多