如何使用numpy的loadtxt和savetxt处理多个文件?

1 投票
1 回答
814 浏览
提问于 2025-04-18 00:29

我希望能读取、计算并打印出多个格式相同的文件。

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 会被填充为文件里的内容,而 a1b1 等等会从 data 中获取它们的内容。

撰写回答