如何在scipy中存储分层数据?

时间:2013-07-31 17:47:32

标签: scipy hdf5

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

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

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

谢谢!

-Shawn

2 个答案:

答案 0 :(得分:1)

如果您只需要从python中读取数据并且不需要更改数据的某些部分,那么使用pickle协议保存您的内容要容易得多。 E.g

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'))

答案 1 :(得分:0)

joblib是另一个允许您转储任意Python对象的工具,具有NumPy阵列专用存储的附加优势。