如何使用numpy的loadtxt和savetxt处理多个文件?
我希望能读取、计算并打印出多个格式相同的文件。
filenames2 = ["AAA", "BBB", "CCC", "DDD", "EEE"]
for filename2 in filenames2:
with loadtxt (filename2, float) as data:
a1 = data[:,0]
b1 = data[:,3]
c1 = data[:,4]
d1 = data[:,5]
e1 = data[:,6]
%% DO something with all those data.
z = numpy.array((calculated_a11, calculated_b11, calculated_c11), dtype = float)
z2 = z.T
numpy.savetxt('avegedoutput_%s.txt' %filenames2, z2.reshape((1000,3)), fmt='%i %f %f')
我希望能这样写,这样就可以处理多个文件了。但是看起来numpy的savetxt和loadtxt并不能这样使用……欢迎任何建议。
提前谢谢大家。
附注) 我是否需要为读取数据的部分先创建空矩阵?好像这些命令会出现这样的错误:“TypeError: 'file' object is unsubscriptable”。
我觉得我需要创建零矩阵,然后像在Matlab中那样把数据放进去。这样做对吗?
1 个回答
2
numpy.loadtxt 是一个函数,它可以读取一个文件名(字符串),然后把文件里的数据变成一个 numpy 数组。所以你不需要使用 with
这个语句块:
filenames2 = ["AAA", "BBB", "CCC", "DDD", "EEE"]
for filename2 in filenames2:
data = np.loadtxt(filename2)
a1 = data[:,0]
# ...
np.savetxt('output_filename.txt', z, ...)
到目前为止,我觉得在你的代码里没有必要创建零矩阵。data
会被填充为文件里的内容,而 a1
、b1
等等会从 data
中获取它们的内容。