将输出从for循环保存为.txt文件

时间:2018-07-18 18:21:40

标签: python for-loop

我是python的初学者,试图将这些输出保存以用于循环计算到.txt文件。

我有40列300行的输入数据。我要放入示例数据:

4.3 3.4 2.3
8.5 1.0 0.0
2.4 4.2 4.5
3.9 2.1 0.5

import numpy as np

q = np.loadtxt('test.txt')

def qtot(i):
    total = 0
    for j in range (3):
        total += q[i][j]
    return total

我想将qtot保存到输出文件中。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您已将300行文件读入内存,这是一个numpy数组。让我们在numpy中进行简单的计算,并将其用于将所有内容保存到文本文件中。

import numpy as np
np.savetxt("output.txt", np.sum( np.loadtxt('test.txt'),axis=1 )[0:5] )

它如何工作.....

  1. np.load-加载文件,它是2d数组
  2. np.sum-对数组中的元素求和,但是axis = 1告诉numpy sum应该以raws开头,因此它返回一个数组,该数组的元素数与文件中的行数相同。
  3. [0:5]-将这个数组缩减为仅前五个元素。您可以使用切片或元组从数组中剪切所需的行
  4. np.savetxt-将其保存到文件中

请注意,numpy在类似于C的低级代码中执行所有操作。因此,按原始方式对所有300行进行求和将比python中的循环快。

-ADD-

如果要将结果添加到文件中,则应以附加模式打开它:

with open(output_file, "a") as fd:
   np.savetxt(fd, np.sum( np.loadtxt('test.txt'),axis=1 )[0:5] )

但是如果要在同一运行中处理多个文件,最好将结果累积到内存中并保存一次

result = []
for fname in [list of input files]:
   result.append( np.sum( np.loadtxt(fname),axis=1 )[0:5] )
np.saavetxt("output.txt", np.array(result))