读取包含特定数字的行

时间:2017-10-01 13:21:50

标签: python

所以,这就是我想要做的: 我有两组数据文本文件。第一组包含如下所示的数据:

timestamps  parameter
151 152     700
153 154     701
155 156     702
157 158     703

第一列和第二列是时间戳,第三列是pramater。 第二组数据如下所示:

timestamp       data value
154.2           +6.0087e-03
155.5           +8.3871e-03
155.7           +5.9500e-03
158             +1.5245e-02

第一列包含时间戳,第二列包含数据值。

所以,我现在要做的是:我想读取某个参数的时间戳,让我们说出参数702的时间戳(所以155和156)。然后我想获取这些时间戳并将这些时间戳之间的所有数据值添加到数组中(因此在此示例中,数组将是:

array = [+8.3871e-03, +5.9500e-03]

所以,我想对第一组中的每一行执行此操作,这意味着参数从700到1100,这样我就可以得到每个参数的数据值数组。我想进一步处理数据,但首先我需要为这个问题找到解决方案,但我并不是真的有个好主意。我很感谢任何建议!

2 个答案:

答案 0 :(得分:0)

所以,我已经认识到我只需要第一组中每一行的第一个条目,所以第一个时间戳。通过这种方式,我找到了一个相当简单的解决方案。它看起来像这样:

pyro01 = np.loadtxt('pyro_eins.dat')
pyro_run01 = []
data01 = np.loadtxt('wavelengths_eins.dat')
    for line in data01:
        pyro_run01.append(np.average(pyro01[pyro01[:,0] == int(line[0])][:,-1]))

其中pyro_eins是第二组(带数据值),wavelength_eins是带参数和时间戳的集合。

答案 1 :(得分:-1)

你可以试试这个:

parameters = {int(i[-1]):i[:-1] for i in [b.strip('\n').split() for b in open('file1.txt')][1:]}
datavals = {a:b for a, b in [i.strip('\n').split() for i in open('file2.txt')][1:]}
parameter = 702
final_arrays = [b for a, b in datavals.items() if float(a) >= float(parameters[parameter][0]) and float(a) <= float(parameters[parameter][-1])]