我有一个格式为(日期,时间,阻力)的文本文件:
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
- 也 -
我不知道如何在日期变化的情况下迭代时间,因为它是一个过夜的数据运行。我的问题的优雅解决方案将非常感激。
答案 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。