我想在 Python语言中使用模块 Pickle 或 cPickle 打开 Matlab 项目。 不是:
from scipy.io import matlab
mat=matlab.loadmat('file.mat')
我可以将pickle.load
与.mat文件一起使用吗?
答案 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结构中对其进行序列化。此时,您将能够轻松地腌制和去除它。 (但最后一步取决于,在某些用例中,不值得做)。