使用Python中的模块PICKLE打开Matlab文件.mat

时间:2011-07-21 17:20:33

标签: python matlab pickle

我想在 Python语言中使用模块 Pickle cPickle 打开 Matlab 项目。 不是:

from scipy.io import matlab
mat=matlab.loadmat('file.mat')

我可以将pickle.load与.mat文件一起使用吗?

3 个答案:

答案 0 :(得分:4)

多年来,Matlab一直使用HDF5来存储数据。 Python通过PyTables支持HDF5。不需要使用Pickle。事实上,相对于Pickle来说,HDF5可能会让你感到惊讶。一位朋友报告说,对于一些非常大的数据集,读/写速度提高了2-10倍。


更新1:可以找到通过HDF5加载文件的简明指南at this page

此外,可以找到几个好的参考资料和资源at this page。还有PyMat project on Sourceforge

答案 1 :(得分:2)

你做不到。 Pickle加载已序列化为二进制数据的Python对象。格式与Matlab文件格式完全不同。

如果您已经从matlab文件中读取了所需的所有数据并将其存储在Python对象中,那么您可以将其存储起来供以后使用,如果有必要,可以选择它。

答案 2 :(得分:2)

这是不可能的。来自泡菜python documentation

  

pickle模块实现了一个基本但强大的算法   序列化和反序列化Python对象结构。 “酸洗”   是将Python对象层次结构转换为a的过程   字节流和“unpickling”是反向操作,由此是一个字节   流被转换回对象层次结构。酸洗(和   unpickling)也称为“序列化”,“编组”,   但是,1或“扁平化”以避免混淆,这里使用的术语   是“酸洗”和“捣蛋”。

在您的情况下,您可以使用scipy.io加载* .mat对象,然后在您可能定义的某个python结构中对其进行序列化。此时,您将能够轻松地腌制和去除它。 (但最后一步取决于,在某些用例中,不值得做)。