gpt4 book ai didi

python - 具有多列的日期时间的 Numpy genfromtxt 问题

转载 作者:太空宇宙 更新时间:2023-11-04 10:25:21 25 4
gpt4 key购买 nike

当我想要一个时,我遇到了一个有两个日期时间列的问题。我正在尝试使用以下

将数据加载到 numpy 数组中
import numpy as np
import datetime
def load_data_from_file( filename):
timeconverter = lambda x: datetime.datetime.strptime(x, "%H:%M:%S.%f")
data = np.genfromtxt(filename,
delimiter=[' '],
dtype=['object','object','float',
'float','float','float'],
converters={1:timeconverter})

我的数据集文件如下所示:

2015/03/19 20:01:00.000 92.339302 0.694200 -0.013000 0.033000

我不知道如何将“2015/03/19”日期列和“20:01:00.000”时间列组合成一个日期时间列。我试过使用空格分隔的导入,但 float 可能有负值,所以这个想法也行不通。有任何想法吗?

最佳答案

一种方法是预处理文本行,将第一个和第二个字符串处理成np.datetime64 可以处理的形式:

def foo(s):
strings = s.split()
date, minutes = strings[:2]
date = date.replace('/','-')+'T'+minutes+'Z'
return ' '.join([date]+strings[2:])

txt=['2015-03-19T20:01:00.000Z 92.339302 0.694200 -0.013000 0.033000']

foo(txt[0])
# '2015-03-19T20:01:00.000 92.339302 0.694200 -0.013000 0.033000'

A=np.genfromtxt([foo(t) for t in txt],dtype='datetime64[ms],f,f,f,f')

制作:

array((datetime.datetime(2015, 3, 19, 20, 1), 92.33930206298828, 0.6941999793052673, -0.013000000268220901, 0.032999999821186066), 
dtype=[('f0', '<M8[ms]'), ('f1', '<f4'), ('f2', '<f4'), ('f3', '<f4'), ('f4', '<f4')])

np.datetime64 的时区假设可能会令人困惑。我在 foo 中添加了 Z 以使 UTC 显式化。但显示可能仍使用本地时间:

A['f0'][()]
# numpy.datetime64('2015-03-19T13:01:00.000-0700')

convertion of datetime to numpy datetime without timezone info

关于python - 具有多列的日期时间的 Numpy genfromtxt 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29682474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com