如何在单个txt文件中写入连续输出

时间:2019-07-20 03:24:22

标签: python numpy

我正在处理多个数据文件(文件_1,文件_2 .....)。我希望每个数据文件的期望输出与新列的行值保存在相同的txt文件中。

我为我的第一个数据文件(File_1)尝试了以下代码。所需的输出(Av_Age_btwn_0_to_5,Av_Age_btwn_5_to_10)作为列的行值存储在输出txt文件(Result.txt)中。现在,当我使用File_2时,我希望这些输出存储为同一txt文件的下一列的行值。然后对于File_3,以类似的方式,我希望输出在下一列中,依此类推。

import numpy as np
data=np.loadtxt('C:/Users/Hrihaan/Desktop/File_1.txt')
Age=data[:,0]
Age_btwn_0_to_5=Age[(Age<5) & (Age>0)]
Age_btwn_5_to_10=Age[(Age<10) & (Age>=5)]
Av_Age_btwn_0_to_5=np.mean(Age_btwn_0_to_5)
Av_Age_btwn_5_to_10=np.mean(Age_btwn_5_to_10)
np.savetxt('/Users/Hrihaan/Desktop/Result.txt', (Av_Age_btwn_0_to_5, Av_Age_btwn_5_to_10), delimiter=',')

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您的每个文件都是一列,并且您希望将它们组合成一个矩阵(每列一个文件)。

也许这样的东西可以工作?

import numpy as np

# Simulate some dummy data
def simulate_data(n_files):
    for i in range(n_files):
        ages = np.random.randint(0,10,100)
        np.savetxt("/tmp/File_{}.txt".format(i),ages,fmt='%i')

# Your file processing
def process(age):

    age_btwn_0_to_5=age[(age<5) & (age>0)]
    age_btwn_5_to_10=age[(age<10) & (age>=5)]

    av_age_btwn_0_to_5=np.mean(age_btwn_0_to_5)
    av_age_btwn_5_to_10=np.mean(age_btwn_5_to_10)

    return (av_age_btwn_0_to_5, av_age_btwn_5_to_10)

n_files = 5
simulate_data(n_files)

results = []
for i in range(n_files):
    # load data
    data=np.loadtxt('/tmp/File_{}.txt'.format(i))

    # Process your file and extract your information
    data_processed = process(data)

    # Store the result
    results.append(data_processed)

results = np.asarray(results)
np.savetxt('/tmp/Result.txt',results.T,delimiter=',',fmt='%.3f')

最后,您会看到类似的内容:

2.649,2.867,2.270,2.475,2.632
7.080,6.920,7.288,7.231,6.880

是您要找的东西吗?

答案 1 :(得分:0)

import numpy as np

# some data
age = np.arange(10)
time = np.arange(10)
mean = np.arange(10)

output = np.array(list(zip(age,time,mean)))

np.savetxt('FooFile.txt', output, delimiter=',', fmt='%s')
#                                                ^^^^^^^^ --> Use this keyword argument if you want to save it as int. For simplicity just don't use it.

输出:

0,0,0
1,1,1
2,2,2
3,3,3
4,4,4
5,5,5
6,6,6
7,7,7
8,8,8
9,9,9