arrays - 使用 Numpy genfromtxt 导入数据并使用日期时间格式化列

标签 arrays numpy datetime python-datetime genfromtxt

我有一个长文本文件,正在使用 numpy genfromtext 导入:

00:00:01 W 348 18.2 55.9 049 1008.8 0.000 
00:00:02 W 012 12.5 55.9 049 1008.8 0.000 
00:00:03 W 012 12.5 55.9 049 1008.8 0.000
00:00:04 W 357 18.2 55.9 049 1008.8 0.000 
00:00:05 W 357 18.2 55.9 049 1008.8 0.000 
00:00:06 W 339 17.6 55.9 049 1008.8 0.000 

testdata = np.genfromtxt(itertools.islice(f_in, 0, None, 60),\
                         names=('time','ew','d12','s12','t12','p12'.....)

time = (testdata['time'])

这会将所有数据组织到一个数组中。文件中的第一列数据是每行的时间戳。在文本文件中,其格式为 00:00:00 ,因此格式为 (%H:%m:%s)。然而,在生成的实际数组中,它会将其转换为 1900-01-01 00:00:00 。当随时间绘制数据时,我无法让它删除 Y-m-d。

我已尝试time = time.strftime('%H:%M:%S')dt.datetime.strptime(time.decode('ascii'), '%H:%M:%S')

两者都没有做任何事情。如何转动我的整个时间数组以保留原始 %H:%m:%s 格式而不添加 %Y-%m-%d?

最佳答案

编辑:根据提供的数据,您可以像这样导入文件:

str2date = lambda x: datetime.strptime(x.decode("utf-8"), '%H:%M:%S').time()

data = np.genfromtxt(itertools.islice(f_in, 0, None, 60), dtype=None,names=('time','ew','d12','s12','t12','p12'.....), delimiter=' ', converters = {0: str2date})

print(data['time'])

输出:

00:00:01

请注意,您需要将您的输入.decode("utf-8") 转换为str2date,因为它接受字节。您可以根据您的具体文件内容在np.genfromtxt()中设置您的dtype

如果您的数据格式正确,您也可以使用它:

dt.datetime.strptime(time,"%H:%M:%S").time()

关于arrays - 使用 Numpy genfromtxt 导入数据并使用日期时间格式化列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61325875/

相关文章:

python - 从特定日期时间范围获取数据

php - 在错误格式的两个日期字段之间搜索

python - NumPy 中通用函数的标识值是多少?它是干什么用的?

python - 如何使用 Opencv 2.4 将 python numpy 数组转换为 RGB 图像?

python - 获取已排序 Numpy 数组的原始索引

在每次迭代中创建新列表并清理数据的多个 for 循环的 Pythonic 方式?

c# - 将字符串 "2017-01-01T12:00:33:123456Z+02"转换为 DateTime

ios - 类型 'customDataObject' 不符合协议(protocol) 'Sequence'

arrays - 检查字典中的数组并返回 UIImage 但它返回相同图像的两倍

java - 将循环结果放入数组后如何使用 ArrayList 和 For 循环?