【问题标题】:scipy.io.loadmat returns MemoryError for big matlab structuresscipy.io.loadmat 为大型 matlab 结构返回 MemoryError
【发布时间】:2017-02-13 00:09:39
【问题描述】:

我想在 python 中打开和处理一些大的 .mat 文件。 scipy.io.loadmat 函数非常适合这个目的。但是,当 .mat 文件很大时,该函数会返回 MemoryError。问题可能是由于我使用的 python 版本(Python 2.7.10 32 位,与 spyder 接口)。这个问题已经提出,但我找不到任何体面的解决方案。理想情况下,我可以在不更改 python 的情况下打开这些文件。有没有办法让 scipy.io.loadmat 函数只加载 .mat 文件中包含的一些变量?

【问题讨论】:

    标签: python matlab scipy 32-bit


    【解决方案1】:

    在此处查看文档:http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html

    您可以传递一个变量名列表以从文件中读取:

    scipy.io.loadmat("myfile.mat", variable_names=["myvar1", "myvar2"]) 
    

    【讨论】:

    • 谢谢。但是请注意,从长远来看,这个技巧并不是一个合适的解决方案。知道如何摆脱这个内存错误吗?
    • 什么意思?长期存在什么问题?
    • 我们应该能够使用 scipy.io.loadmat() 函数打开任何 .mat 文件,无论文件大小如何。现在情况并非如此。当我尝试打开大于 .1 GB 的 .mat 文件时,我系统地出现内存错误
    • 这些文件是您在同一台机器上创建的和/或能够打开 MATLAB 吗?什么样的MATLAB结构?主要是矩阵,还是很多单元格和结构?
    • Matlab 打开这些文件没有任何问题。它们包含 double 和 struct 对象。例如,在一个数据文件中,我有 15 个 205x6001 双对象(每个双对象的字节数约为 9841600)。
    猜你喜欢
    • 2016-12-26
    • 2017-04-10
    • 2011-10-23
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多