【问题标题】:How to store hierarchical data in scipy?如何在 scipy 中存储分层数据?
【发布时间】:2013-08-01 09:23:30
【问题描述】:

我正在使用 Scipy 堆栈进行数据分析,并且经常处理具有复杂层次结构的数据,例如将元素作为列表的字典,这些列表中又包含多个字典...

因此我需要将这些数据存储在一个文件中。我一直在使用 scipy.io.savemat,但我读到 HDF5 更合适且平台特定性更低(savemat 用于 Matlab)。缺点是使用 h5py,而不是直接在工作区中保存变量,我必须手动复制复杂的结构(即,对于每个字典,我需要相应地手动 create_group)。

是否有标准的方法来做到这一点,比如我们如何在 Matlab 中保存“.mat”文件?

谢谢!

-肖恩

【问题讨论】:

    标签: scipy hdf5


    【解决方案1】:

    如果您只需要从 python 中读取数据并且不需要更改数据的某些位,那么使用 pickle 协议保存您的东西要容易得多。 例如

    import cPickle
    f=open('something.pickle','w+')
    cPickle.dump(whatever_object_youd_like_to_save,f,protocol=2)
    

    然后你可以使用加载它

    your_object = cPickle.load(open('something.pickle'))
    

    【讨论】:

    • 非常感谢。我知道应该有这样的东西,但对于像我这样的新手来说知道这一点并不是很直观 - 再次非常感谢!
    【解决方案2】:

    joblib 是另一个工具,可让您转储任意 Python 对象,并具有用于 NumPy 数组的专用存储的额外优势。

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 2010-11-03
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多