我有一系列的大型文本文件(高达1GB),这些文件是实验输出,需要在Python中进行分析。最好将它们加载到2D numpy数组中,这引发了第一个问题:
- 由于在加载开始时行数不确定,如何最有效地逐行构建非常大的numpy数组?
简单地将行添加到数组中,在内存方面效率低下,因为两个大数组会短暂共存。如果使用numpy.append
也会出现同样的问题。虽然stack
函数很有前景,但理想情况下我希望能够原地增加数组。
这引出了第二个问题:
- 观察 Python 程序严重使用 numpy 数组时的内存使用情况的最佳方法是什么?
为了研究上述问题,我已经使用了通常的内存分析工具 - heapy 和 pympler - 但只得到了外部数组对象的大小(80字节),而没有获取其中包含的数据。除了粗略测量Python进程使用的内存量之外,我如何获得随着数组增长其“完整”大小的信息?
本地详细信息:OSX 10.6,Python 2.6,但欢迎提供通用的解决方案。