【发布时间】:2011-05-20 22:33:44
【问题描述】:
我有一个二进制文件,其中包含一个密集的n*m 32 位浮点矩阵。将它读入 Fortran 排序的 numpy 数组的最有效方法是什么?
文件大小为数 GB。我可以控制格式,但它必须紧凑(即长度约为 4*n*m 字节)并且必须易于从非 Python 代码生成。
编辑:该方法必须直接生成一个Fortran有序矩阵(由于数据的大小,我无法创建一个C有序矩阵然后对其进行转换到一个单独的 Fortran 有序副本中。)
【问题讨论】:
-
scipy.org/Cookbook/InputOutput 会回答您的问题吗? (参见“二进制文件”部分)
-
@nimrodm 谢谢。事实上,我已经尝试过那里描述的一些方法。我问这个问题是希望有人能挺身而出,他要么有做我想做的事情的第一手经验,要么熟悉
numpy内部结构并可以从这个角度提出建议。 -
通常我在将非常大的数组读入 numpy 时发现,我需要提前知道大小,以便预先分配适当的数组来保存数据。事先知道尺寸吗?如果没有,请尝试使用两遍方法:首先扫描以发现数据的大小/维度,然后分配数组,然后读取/解析该数组。
-
@Peter 好点,谢谢。我事先知道大小(我控制数据格式,所以我可以将大小写成文件头的一部分。)
标签: python performance numpy scipy large-files