我又遇到了一个问题 - 我有多个文件,格式如下:
频率 AB
1000 1.2 0.0014
100 1.2 0.00013
10 1.2 0.0012
所有文件都在同一个文件夹中;到目前为止,我能够读取所有文件,进行我想要的计算,然后保存一个包含所有需要数据的大文件(代码见下文)
在我保存我想要的数据之前:
将数据分解为原始文件的数量,使用新数据,并使用与输入名称相同的名称(代码中的N是每个文件的行数,我用它来识别我有多少个文件从总行数中获得)
并且,要在一个图中绘制所有不同的数据(假设我有 3 个像上面这样的文件,我想要一个有 3 行的图,都在同一个图上) - 我似乎无法做到这一点,因为我所有的尝试只给我一行
* 更新 - 我可以读取数据,并将所有内容放在第一个循环中,然后我可以查看所有数据 - 现在我想自动化保存功能,但代码(见下面的简化版本)只保存一个数据集(可能会覆盖文本文件?)* UPDATE 2 - 现在可以使用 - 需要在第二个循环中添加保存功能
import os
import numpy as np
datadirectory = '/media/data'
os.chdir( datadirectory)
listing = os.listdir(datadirectory)
my_array=np.zeros(shape=(0,3))
for infile in listing:
dataset = open(infile).readlines()
data = np.genfromtxt(dataset, usecols=(0,1,2))
my_array = np.vstack((my_array, data))
lta= my_array
此处进行一些处理 - lta 现在有 5 列
Results=np.column_stack((lta[:,0], lta[:,1], lta[:,2], lta[:,3], lta[:,4]))
for i in listing:
date = i
np.savetxt((os.path.join(resultpath, date)) + '.txt', Results, fmt='%s', delimiter='\t')
my_array = np.vstack((my_array, Results))
绘制数据 - 在 my_array 数组中我有所有数据,每 N 行(给定数字)我有一个不同的数据集 - 我想在同一个图中绘制所有数据,每 N 行我想更改符号颜色
import matplotlib.pylab as plt
plt.figure(figsize=(10,5))
#graph_axes = plt.subplot(N,2,1)
graph = plt.semilogx(my_array[:,0], my_array[:,2])
plt.ylim(0, 25)
plt.xlim(0.1, 1000)
plt.show()
plt.savefig(os.path.join(resultpath, 'image.png'))
任何帮助/指导表示赞赏!