将大型NumPy数组写入文件的有效方法

Fom*_*ite 6 python numpy scientific-computing

我目前有一个在PiCloud上运行的项目,涉及ODE解算器的多次迭代.每次迭代都会生成一个大约30行和1500列的NumPy数组,每次迭代都会附加到前面结果数组的底部.

通常情况下,我只是让函数返回这些相当大的数组,将它们保存在内存中并在一个处理它们.除了 PiCloud对数据大小有相当限制的限制,可以通过函数返回和退出数据,以降低传输成本.哪个很好,除了这意味着我必须启动数千个作业,每个作业都在迭代中运行,而且开销很大.

看来最好的解决方案是将输出写入文件,然后使用其他没有传输限制的函数收集文件.

我最好的办法是将其转储到CSV文件中吗?我应该在每次迭代时添加到CSV文件中,还是将其全部保存在数组中直到结束然后只写一次?我有什么特别聪明的东西吗?

And*_*ffe 8

除非有中间文件是人类可读的原因,否则不要使用CSV,因为这将不可避免地导致精度损失.

最有效的可能是tofile(doc),用于在提前知道数据的所有属性时将文件快速转储到磁盘.

对于与平台无关但特定于numpy的保存,您可以使用save(doc).

如果你需要便携性,Numpy和scipy也支持各种科学数据格式,如HDF5.