6

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

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

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

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

然而,在我几乎没有开始我的程序之前,我得到了错误:

ValueError:float() 的无效文字:2013 年 12 月 11 日

-还-

鉴于日期会发生变化,因为它是通宵数据运行,因此我不确定如何迭代时间。我的问题的优雅解决方案将不胜感激。

4

2 回答 2

1

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

    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]
于 2013-11-14T14:17:12.610 回答
0

如果您出于其他原因想要坚持使用 numpy,您可能想看看这个。

于 2013-11-14T15:04:53.670 回答