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

use*_*169 6 python text extract text-files

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

12/11/2013  13:20:38    28.321930E+3
...         ...             ...
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

-也-

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

Jac*_*des 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
Run Code Online (Sandbox Code Playgroud)

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

R_in_six_sec_interval=[R[2] for R in filtered_data]
Run Code Online (Sandbox Code Playgroud)