【发布时间】:2015-07-22 12:42:04
【问题描述】:
我有一组大型(~100,000,000 行)文本文件,格式如下:
0.088293 1.3218e-32 2.886e-07 2.378e-02 21617 28702
0.111662 1.1543e-32 3.649e-07 1.942e-02 93804 95906
0.137970 1.2489e-32 4.509e-07 1.917e-02 89732 99938
0.149389 8.0725e-32 4.882e-07 2.039e-02 71615 69733
...
我想找出第 2 列的平均值和总和,以及第 3 列和第 4 列的最大值和最小值,以及总行数。如何使用 NumPy 有效地做到这一点?由于它们的大小,loadtxt 和genfromtxt 不好(需要很长时间才能执行),因为它们试图将整个文件读入内存。相比之下,像awk这样的Unix工具:
awk '{ total += $2 } END { print total/NR }' <filename>
在合理的时间内工作。
Python/NumPy 可以为这么大的文件完成awk 的工作吗?
【问题讨论】:
-
所以你只是在寻找一个 numpy 的答案?这个技术我不知道,但是
awk可以做的很好 -
我愿意接受
awk的回答,如果我可以在文件的一次传递中获得其他统计信息。我不太了解awk。 -
那么它也将有助于显示所需的输出应该是什么样子
-
我不太担心精确的输出格式:单行上的空格分隔值或单独行上的
<key> = <val>对都可以。