0

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

4

1 回答 1

0

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

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

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

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

于 2017-10-01T08:13:23.790 回答