【问题标题】:loading large csv files in Matlab在 Matlab 中加载大型 csv 文件
【发布时间】:2015-10-22 13:31:51
【问题描述】:

我有大小为 6GB 的 csv 文件,我尝试使用 Matlab 上的导入功能来加载它们,但由于内存问题而失败。有没有办法减小文件的大小?

我认为没有。的列导致问题。我有 133076 行乘 2329 列。我有另一个相同编号的文件。行,但只有 12 行,Matlab 可以处理。但是,一旦列增加,文件就会变得非常大。

如果我可以明智地读取数据列,以便我可以拥有 133076 的 2329 列向量,那就太好了。

我正在使用 Matlab 2014a

【问题讨论】:

    标签: matlab csv


    【解决方案1】:

    Matlab 默认以双精度格式存储数字数据,每个数字占用 8 个字节。因此,大小为 133076 x 2329 的数据占用了 2.3 GiB 的内存。你有那么多空闲内存吗?如果没有,减小文件大小将无济于事。

    如果问题不是数据本身不适合内存,而真的是读取这么大的csv文件的过程,那么也许使用syntax

    M = csvread(filename,R1,C1,[R1 C1 R2 C2])
    

    可能会有所帮助,它允许您一次只读取部分数据。以块的形式读取数据并将它们组装到(预分配!)数组中。

    如果你没有足够的内存,另一种可能是逐块读取,然后在存储之前将每个块转换为single precision。这将内存消耗减少了两倍。

    最后,如果您不一次处理所有数据,但可以实现您的算法,使其一次仅使用几行或几列,那么相同的语法可能会帮助您避免将所有数据放入同时记忆。

    【讨论】:

    • 感谢您的提示。但是你碰巧使用 python 并尝试过 pandas 吗?
    • @AKSG,不,抱歉我没有。
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 2013-06-27
    • 2013-07-10
    • 2014-08-12
    • 2012-02-26
    • 2016-01-17
    • 2012-06-02
    • 1970-01-01
    相关资源
    最近更新 更多