【问题标题】:Append npy file to another npy file with same number of columns in both files将 npy 文件附加到两个文件中具有相同列数的另一个 npy 文件
【发布时间】:2017-10-01 08:05:36
【问题描述】:

npy 文件大小约为 5 GB,RAM 约为 5 GB,因此无法同时加载两个 numpy 数组。如何加载一个 npy 文件并将其行附加到另一个 npy 文件而不加载它

【问题讨论】:

    标签: python python-2.7 numpy numpy-ufunc numpy-memmap


    【解决方案1】:

    npy 文件是包含数据类型(元数据)和形状的标头,后跟数据本身。

    标题以'\n'(换行符)字符结尾。因此,以追加模式打开您的第一个文件,然后以读取模式打开第二个文件,通过readline() 跳过标题,然后将块(使用read(size))从第二个文件复制到第一个。

    只剩下一件事:更新标题中的形状(长度)字段。这里有点棘手,因为如果这两个文件具有例如形状(700,)(400,),则新形状需要为(1300,),但标题中可能没有空间。这取决于原始标题中有多少填充字符——有时你会有空间,有时你不会。如果没有空间,您将需要将新标头写入新文件,然后从两个源文件中复制数据。不过,这不会占用太多内存或时间,只需要一点额外的磁盘空间。

    您可以在此处查看读取和写入 npy 文件的代码:https://github.com/numpy/numpy/blob/master/numpy/lib/format.py - 您可能会发现一些未记录的函数对您的任务有用。

    【讨论】:

    • 很好的解释! :) 如果你分享代码也会很有帮助!谢谢!
    • 我无法共享代码,因为我没有它。你需要写它。
    猜你喜欢
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 2022-12-17
    • 2020-10-11
    • 2022-11-01
    • 2019-09-10
    • 2016-08-14
    • 1970-01-01
    相关资源
    最近更新 更多