双时态HDF5

bth5的Python项目详细描述


双时态h5

基于HDF5(h5py)的通用双时态模型

型号

双时态的基本模型是一个可扩展的HDF5数据集 在具有命名列和不同数据类型的单个维度上 每列。在内存中,这将由numpy结构化数组表示。 我们将此结构称为Table,用于这里的目的。在

请注意,HDF5在高层有自己的表数据结构 接口(hdf5 hl)。我们不会使用这里的高级表 有几个原因。首先,h5py不支持HDF5 高层结构。第二,我们计划最终退出 具有重复数据消除缓存的值列。依赖于低层次的HDF5结构 给予我们未来的灵活性。在

表中的列如下:

  • transaction_id (uint64):这是一个单调整数,表示 导致写入此行的精确写入操作。多行可能 同时写入,所以这个值在行中不是唯一的 假设具有给定事务id的所有行在表中都是连续的。 此值为零索引。当前最大事务id应为 以max_transaction_id(也可以是uint64)写入表的属性。 写操作应该使max_transaction_id增加一个。在
  • transaction_time (datetime64):这是一个时间戳(从epoch开始秒)。任何元数据 关于时区应该作为数据集的字符串属性存储为 transaction_time_zone。这表示数据在 由写入操作记录。具有相同transaction_id的所有行都应 这里有相同的值。在
  • valid_time (datetime64):这是一个时间戳(从epoch开始秒)。任何元数据 关于timetzones应该作为数据集的字符串属性存储为 valid_time_zone。这是时间序列的主轴。它代表 存储在value列中的数据。在
  • value ((I,J,K,...)<scalar-type>|):此列表示实际值 时间序列的。这可以是任何有效数据类型的N维数组。 将我们自己限制为float和int可能就足够了,但是模型 应该足够通用,可以接受任何标量数据类型。另外,典型的 用例将使此列成为标量浮点值。在

因此,具有浮点值和(1, 2, 3)形状的numpy dtype示例如下:

np.dtype([('transaction_id','<uint64'),('transaction_time','<M8'),('valid_time','<M8'),('value','<f8',(1,2,3))])

快速启动API

写入双时态HDF5存储器的接口如下:

^{pr2}$

从数据集中读取数据应遵循正常的numpy索引:

# opened in read-only mode>>>ds=bth5.open("/path/to/file.h5","/path/to/group")>>>in_mem=ds[:]>>>in_mem.dtypenp.dtype([('valid_time','<M8'),('value','<f8',(1,2,3))])

这将再次返回中存在的最新有效时间和值 简化数据集。此外,还有一个泄放阀来达到 磁盘上表示的数据集。这是raw属性,它返回 对h5py数据集的引用。在

>>>ds=bth5.open("/path/to/file.h5","/path/to/group")>>>ds.raw

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)