从给定另一个值的数组中选择条目

时间:2013-11-14 13:24:14

标签: python text text-files extract

我有一个格式为(日期,时间,阻力)的文本文件:

12/11/2013  13:20:38    28.321930E+3
...         ...             ...

我需要在第一次数据输入后每6秒提取一次阻力值(第三列)。首先,我想使用以下方法导入文本文件:

date, time, resistance = loadtxt('Thermometers.txt', unpack=True, usecols=[0,1,2])

然而,在我开始编程之前,我收到错误:

  

ValueError:float()的无效文字:12/11/2013

- 也 -

我不知道如何在日期变化的情况下迭代时间,因为它是一个过夜的数据运行。我的问题的优雅解决方案将非常感激。

2 个答案:

答案 0 :(得分:1)

我认为这段代码会做你想做的事。而且,您不必担心隔夜数据和更改日期,因为这会将其转换为datetime对象。

    import datetime

    filtered_data=[]

    my_data=open(my_file,'r')
    for line in my_data:

        data_arr=line.split()
        dte=data_arr[0].split("/") r
        tme=data_arr[1].split(":") 
        new_date=datetime.datetime((int(dte[2]),int(dte[0]),int(dte[1]),
                                    int(tme[0]),int(tme[1]),int(tme[2]))

        if filtered_data==[]:
           filtered_data.append(data_arr)

        else:
           if (new_date-old_date).seconds==6:
                filtered_data.append(data_arr)

        old_date=new_date

这将为您提供一个列表,根据您的情况(每6秒钟)过滤项目。现在,如果您只想要以6秒间隔分布的阻力数组,使用如下所示的简单循环或列表理解就足够了:

R_in_six_sec_interval=[R[2] for R in filtered_data]

答案 1 :(得分:0)

如果你想因其他原因坚持使用numpy,你可能想要look at this