我有一个大型(~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
的工作吗?
2 回答
遍历这些行并应用正则表达式来提取您要查找的数据,将其添加到您想要的每列的最初空列表中 .
一旦列表中的列,您可以将max(list)min(list)avg(list)函数应用于数据,以获得您感兴趣的任何计算 .
注意:您可能需要修改将数据添加到列表中的位置,并将数字从str转换为int形式,以便max,min,avg函数可以对它们进行操作 .
你可以这样说:
测试
根据您的输入: