gpt4 book ai didi

python - HDF5格式的时间序列存储

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:47 39 4
gpt4 key购买 nike

我想将时间序列的结果(传感器数据)存储到 HDF5 文件中。我似乎无法为我的数据集分配值。显然,我做错了什么,我只是不确定是什么......

代码:

from datetime import datetime, timezone
import h5py

TIME_SERIES_FLOAT = np.dtype([("time", h5py.special_dtype(vlen=str)),
("value", np.float)])

h5 = h5py.File('balh.h5', "w")
dset = create_dataset('data', (1, 2), chunks=True, maxshape=(None, 2), dtype=TIME_SERIES_FLOAT)
dset[0]['time'] = datetime.now(timezone.utc).astimezone().isoformat()
dset[0]['value'] = 0.0

然后更新代码会调整数据集的大小并添加更多值。显然,按值这样做是低效的:

size = list(dset.shape)
size[0] += 1
dset.resize(tuple(size))
dset[size[0]-1]['time'] = datetime.now(timezone.utc).astimezone().isoformat()
dset[size[0]-1]['value'] = value

更好的方法是将一些数据整理到 np.array 中,然后经常添加......

这合理吗?...

最佳答案

我需要更多咖啡......

定义的类型是一个包含字符串(也称为时间)和 float (又称为值)的元组,因此要添加一个,我需要:

dset[-1] = (datetime.now(timezone.utc).astimezone().isoformat(), value)

其实就是这么简单!

添加许多条目是这样完成的:

l = [('stamp', x) for x in range(10)] 
size = list(dset.shape)
tmp = size[0]
size[0] += len(l)
dset.resize(tuple(size))
for x in range(len(l)):
dset[tmp+x] = l[x]

尽管如此,这感觉有点笨拙和次优......

关于python - HDF5格式的时间序列存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299629/

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