我目前有一个在 PiCloud 上运行的项目,其中涉及 ODE 求解器的多次迭代。每次迭代都会生成一个约 30 行和 1500 列的 NumPy 数组,每次迭代都会附加到先前结果数组的底部。
通常,我只是让函数返回这些相当大的数组,将它们保存在内存中并一次性处理它们。ExceptPiCloud 对函数可以输出和返回的数据大小有相当严格的限制,以降低传输成本。这很好,但这意味着我必须启动数千个作业,每个作业都在迭代上运行,开销相当大。
看来最好的解决方案是将输出写入文件,然后使用他们拥有的另一个没有传输限制的函数收集文件。
我最好的选择是将其转储到 CSV 文件中吗?我应该在每次迭代中添加到 CSV 文件中,还是将其全部保存在一个数组中直到最后,然后只写入一次?我是否缺少一些非常聪明的东西?
除非有理由使中间文件可供人类阅读,否则请执行以下操作:not使用 CSV,因为这将不可避免地导致精度损失。
最有效的可能是tofile
(doc http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tofile.html#numpy.ndarray.tofile),用于在您提前知道数据的所有属性时将文件快速转储到磁盘。
对于独立于平台但特定于 numpy 的保存,您可以使用save
(doc http://docs.scipy.org/doc/numpy/reference/generated/numpy.save.html#numpy.save).
如果您需要可移植性,Numpy 和 scipy 还支持各种科学数据格式,例如 HDF5。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)