HDF5 C++ 使用

2023-05-16

HDF5

简介

HDF5 可以用来存储异构数据对象,包括图片,表,图,甚至 PDF 和 Excel. HDF5 中的数据存储在不同组(Group)中,类似于 Linux 文件树结构。HDF5 数据集 (Datasets) 存储原始数据和元数据 (Metadata) 包括数据类型,维度,属性与性质。

  • 数据类型 (Datatypes)
  1. 预定义数据类型 (pre-defined datatypes)
    分为标准数据类型和本地数据类型。前者在任何平台上相同,eg. H5T_IEEE_F32BE (32 bit float Big Endian);后者在不同机器上不同
  2. 延伸数据类型 (Derived Datatypes)
    由预定义数据类型组合而来。
  • 数据空间 (Dataspace)

命名规则

H5A Attribute Interface
H5D Dataset Interface
H5F File Interface

类型

为保障跨平台可用,HDF5 内定义三种类型用来操作文件。

  • hid_t 作为对象句柄。
  • hsize_t 用作维度。
  • herr_t 接收返回状态。

例子

#include "hdf5.h"
#include "stdlib.h"
#include "stdio.h"

int main(){
	hid_t file_id;
	herr_t status;
	file_id = H5Fopen("result.hdf5", H5F_ACC_RDWR,  H5P_DEFAULT);

    // get data set info
    hid_t dataset_id = H5Dopen2(file_id, "/result", H5P_DEFAULT);
    // get data space info
    hid_t space_id = H5Dget_space(dataset_id);
    hsize_t dims_out[2];
    H5Sget_simple_extent_dims(space_id, dims_out, NULL);

    // allocate data buffer
    int *dset_data = malloc(dims_out[0] * dims_out[1] * sizeof(int ));

    status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,  H5P_DEFAULT, dset_data);

    printf("Read Status: %d \n", status);
    printf("First Three Element %d %d %d \n", dset_data[0], dset_data[1], dset_data[2]);

    /* Close the dataset and dataspace */
    status = H5Dclose(dataset_id);
    status = H5Sclose(space_id);
	status = H5Fclose(file_id);
    free(dset_data);
	return 0;
}
#include "hdf5.h"
#include "stdlib.h"
#include "stdio.h"

int main(){
    hid_t file_id;
    herr_t status;

    // create file; overwrite existing one `H5F_ACC_TRUNC`
    file_id = H5Fcreate("file.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

    int* dset = malloc(24*sizeof(int));
    for(int i = 0; i < 24; i++){
        dset[i] = i;
    }
    
    // create data space
    hsize_t dims[2];
    dims[0] = 4;
    dims[1] = 6;
    hid_t dataspace_id = H5Screate_simple(2, dims, NULL);

    // create data set
    hid_t dataset_id = H5Dcreate2(file_id, "/dset", H5T_NATIVE_INT, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
    status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, dset);

	hid_t group_id = H5GOpen2(file_id, "/MyGroup", H5P_DEFAULT);
	// use group_id instead of file id to create dataset under the group
	hid_t dataset2_id = H5Dcreate2(group_id, "dset2", H5T_STD_I32BE, dataspace_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
	// write data using dataset2_id
	
    status = H5Dclose(dataset_id);
    status = H5Sclose(dataspace_id);
    status = H5Fclose(file_id);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDF5 C++ 使用 的相关文章

  • [caffe]:检查失败:检查失败:hdf_blobs_[i]->shape(0) == num(200 vs. 6000)

    我有训练并将数据标记为 data mat 我有 200 个训练数据 包含 6000 个特征 标签为 1 1 已保存在 data mat 中 我正在尝试将数据转换为 hdf5 并使用以下命令运行 C affe load data mat hd
  • 使用 h5py 将光栅图像添加到 HDF5 文件

    如果这是一个新手问题 我很抱歉 但我对 Python 和 HDF5 相当陌生 我正在使用 h5py numpy 和 Python 2 7 我有来自各种文件的数据需要导入到一个 HDF5 文件中 每个文件的数据将存储在不同的组中 每个组都需要
  • pytables安装失败

    I do sudo pip install upgrade tables I get usr bin ld cannot find lhdf5 collect2 ld returned 1 exit status ERROR Could n
  • 连接两个big pandas.HDFStore HDF5文件

    这个问题在某种程度上与 连接大量HDF5文件 我有几个巨大的 HDF5 文件 压缩后约 20GB 无法容纳 RAM 每个都存放几个pandas DataFrame格式相同且索引不重叠 我想将它们连接起来 形成一个 HDF5 文件 并正确连接
  • matlab mex 文件的共享库位置:

    我正在尝试编写一个使用 libhdf5 的 matlab mex 函数 我的 Linux 安装提供了 libhdf5 1 8 共享库和标头 然而 我的 Matlab 版本 r2007b 提供了 1 6 版本的 libhdf5 so Matl
  • 如何降级使用tensorflow-gpu安装的hdf5

    最近我尝试安装tensorflow gpu以下https www youtube com watch v tPq6NIboLSc这个视频 但是当我尝试导入tensorflow 或keras 时 我的内核崩溃并给出以下错误消息 C Users
  • RuntimeError:当我附加 hdf5 文件时无法创建链接(名称已存在)?

    我正在尝试将 hdf5 数据集附加到之前的 hdf5 数据集发生以下错误 h5o link obj id self id 名称 lcpl lcpl lapl self lapl 文件 h5py objects pyx 第 54 行 在 h5
  • 如何为组创建属性并在 hdf5 文件系统中访问它们?

    我想在 hdf5 文件中创建两个组 第一组 h5md团体简介和 颗粒 脂质组组2描述 前者仅包含一个直接属性 版本 1 0 和两个组创建者和作者及其属性 因此这里没有数据集 在 粒子 脂质组中 唯一缺少的部分是盒子组盒组说明 最少的信息是两
  • 将多个 hdf5 文件合并到一个 pytable 中

    我有一些hdf5文件 每个文件都具有相同的结构 我想创建一个pytable通过某种方式合并它们hdf5 files 我的意思是 如果 file1 中的数组的大小为 x 而 file2 中的数组的大小为 y 则结果数组pytable大小为 x
  • 使用h5py增量写入hdf5

    我有一个关于如何最好地使用 python h5py 写入 hdf5 文件的问题 我有这样的数据 timepoint voltage1 voltage2 178 10 12 179 12 11 185 9
  • 哪个加载速度更快:python 中的 pickle 或 hdf5

    给定一个 1 5 GB 的 pandas 数据帧列表 哪种格式加载压缩数据最快 pickle 通过 cPickle hdf5 还是 Python 中的其他东西 我只关心将数据加载到内存的最快速度 我不在乎转储数据 它很慢 但我只这样做一次
  • 使用 Python 的 Azure 存储帐户 blob 流

    使用最新的 azure storage blob 12 4 0 python 库 我需要在 blob 上打开一个流 而不将其完全下载到内存中 我有 hdf5 文件存储在存储帐户中 使用 h5py 2 10 0 我需要提取一些信息 读取数据而
  • 使用 Visual C++ 将二维数组 int[n][m] 写入 HDF5 文件

    我刚刚开始使用 HDF5 希望得到有关以下内容的一些建议 我有一个二维数组 data 传递到一个方法中 该方法如下所示 void WriteData int data 48 100 int sizes 48 数据的大小实际上不是 48 x
  • h5py 中的压缩文件更大

    我正在使用 h5py 从 python 以 HDF5 格式保存 numpy 数组 最近 我尝试应用压缩 但得到的文件大小更大 我从这样的事情 每个文件都有几个数据集 开始 self h5 current frame create datas
  • 使用另一个 pandas DataFrame 更新存储在 Pytable 中的 pandas DataFrame

    我正在尝试创建一个函数 用 pandas DataFrame 中的新数据更新我存储在 PyTable 中的 pandas DataFrame 我想检查 PyTable 中是否缺少特定 DatetimeIndexes 的某些数据 值为 NaN
  • 从多个 hdf5 组创建数据集

    从多个 hdf5 组创建数据集 团体代码 np array hdf get all my groups 然后我添加了用于从组创建数据集的代码 with h5py File train h5 w as hdf hdf create datas
  • HDF5:如何将数据附加到数据集(可扩展数组)

    依照指示本教程 http www hdfgroup org ftp HDF5 current src unpacked examples h5 extend c 我尝试扩展我的 HDF5 数据集 代码如下 但是数据未正确写入数据集 数据集具
  • 具有版本控制的 HDF5 文件 (h5py) - 每次保存时哈希值都会更改

    我正在使用 h5py 将数值工作的中间数据存储在 HDF5 文件中 我的项目处于版本控制之下 但这不适用于 HDF5 文件 因为每次重新运行生成 HDF5 文件的脚本时 即使其中的数据没有变化 二进制文件也会发生变化 这是一个小例子来说明这
  • 将多个 csv 文件读取到 HDF5 时出现 Pandas ParserError EOF 字符

    使用Python3 Pandas 0 12 我正在尝试将多个 csv 文件 总大小为 7 9 GB 写入 HDF5 存储以供稍后处理 每个 csv 文件包含大约 100 万行 15 列 数据类型主要是字符串 但也有一些浮点数 但是 当我尝试
  • HDF5 - 并发、压缩和 I/O 性能 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 HDF5 性能和并发性有以下疑问 HDF5 支持并发写访问吗 撇开并发因素不谈 HDF5 的性能如何 输入 输出性能 does 压缩率影响性能

随机推荐

  • win32 获取窗口句柄的方法

    第一种方法是根据窗口句柄值获取窗口句柄 使用spy 43 43 获取指定窗口的窗口句柄值 xff0c 因为句柄值是16进制数 xff0c 所以前面加0x 然后进行强制转换为HWND类型 HWND hWnd 61 HWND 0x0028072
  • 当设置display:inline;时li的宽度无效的解决方法

    若制作导航栏时 xff0c 使用列表li 的定义时 xff0c 若想加上一个背景图 xff0c 这时候若定义li的一个属性为 li display inline width 83px height 30px xff0c 则浏览器会无视后面的
  • js文本框或者按钮鼠标悬停提示说明文字

    html页面中很多元素会用到文本提示 xff0c 当鼠标悬停之后显示一段说明文字 显示说明性文字 function tips id str t 61 getTop document getElementById id document ge
  • localstorage兼容ie8以下浏览器的问题

    最近在做一个网站 xff0c 由于希望尽可能减小服务器的压力 xff0c 也想提高网站的运转速度 xff0c 就想尽可能少的在服务器上读写数据以及下载重复数据 xff0c 需要重复使用的数据 xff0c 就储存在本地 xff0c 能在本地进
  • HTTP请求返回状态码中301与302的状态码区别

    一 xff0e 官方说法 301 xff0c 302 都是HTTP状态的编码 xff0c 都代表着某个URL发生了转移 xff0c 不同之处在于 xff1a 301 redirect 301 代表永久性转移 Permanently Move
  • java防止 csrf 攻击 --- 采用 spring .

    CSRF xff08 Cross site request forgery xff09 xff0c 中文名称 xff1a 跨站请求伪造 xff0c 也被称为 xff1a one click attack session riding xff
  • Gson解析数组多类型元素

    why used gson Gson is a Java library that can be used to convert Java Objects into their JSON representation It can also
  • js中获取时间new Date()详细介绍

    1 var myDate 61 new Date Date 返回当日的日期和时间 getDate 从 Date 对象返回一个月中的某一天 1 31 getDay 从 Date 对象返回一周中的某一天 0 6 getMonth 从 Date
  • 如何让一个行内元素(如一张图片)在div中居中

    xff08 1 xff09 第一种 xff1a 用vertical align lt div class 61 34 method1 34 gt lt span class 61 34 tiptop 34 gt lt span gt lt
  • 释放webpack tree-shaking潜力之webpack-deep-scope-analysis-plugin

    在上周末广州举办的 feday 中 webpack 的核心开发者 Sean 在介绍 webpack 插件系统原理时 隆重介绍了一个中国学生于 Google 夏令营 在导师 Tobias 带领下写的一个 webpack 插件 https gi
  • iframe跨域通信的通用解决方案

    此方案已有新版本 请查看 iframe跨域通信的通用解决方案 第二弹 xff08 终极解决方案 xff09 本文章可做技术学习供继续交流 一 背景 在这个Web页面越来越丰富的时代 xff0c 页面通过iframe嵌入其他的页面也越来越常见
  • C++实现轻量级RPC分布式网络通信框架

    前言 xff1a 2022 4 14更新 xff1a 在我重新回顾这篇文章的时候 xff0c 我觉得里面内容有点乱 xff0c 主要还是因为RPC里面涉及到很多概念和知识点 本来代码内容就已经挺抽象了 xff0c 还要结合各种概念 xff0
  • 浅谈JavaScript设计模式

    创建型模式 xff1a 该模式处理的是用于创建对象的各种机制 工厂方法抽象工厂建造者原型单例 结构型模式 xff1a 考虑的是对象的组成以及对象彼此之间的关系 适配器桥接组合装饰器外观享元代理 行为型模式 xff1a 关注的是对象之间的依赖
  • Ardupilot-SITL仿真模拟调试

    1 配置SITL仿真调试 span class token punctuation span span class token operator span waf configure span class token operator sp
  • PX4——Range Finder 篇

    Range Finder 此处选用的是 Benewake 下的 Lidar 参数设置 General Configuration 除了官方的参数设置外 xff0c 我在 EKF2 中还找到了 EKF2 RNG AID 参数 xff0c 用来
  • STM32 时钟 定时器基础

    STM32 Clock Tree 时钟源 HSI xff1a xff08 High Speed Internal xff09 内部的 RC 震荡电路产生时钟信号 HSE xff1a xff08 High Speed External xff
  • Albumentation

    文章目录 AlbumentationClassificationSegmentationDetectionKeyPoints Augmentation Albumentation 所有实现的变换 变换以及支持的类型 此处 Classific
  • Pytorch 分布式训练

    文章目录 分布式训练OverviewDP or DDPDPDDP TCP 初始化Moco TCP 初始化例子 ENV 初始化可选后端进程间通信操作Template 区分概念 xff1a Machine vs Device 多机 Machin
  • FLANN C++ 使用

    FLANN FLANN 库 xff0c 包含 KNN 算法 众多工程 xff08 例如 OpenCV xff09 使用了 FLANN xff0c 这里单独介绍这个库 xff0c 方便以后单独使用 由官方 Latex 编译的文档链接 xff0
  • HDF5 C++ 使用

    HDF5 简介 HDF5 可以用来存储异构数据对象 xff0c 包括图片 xff0c 表 xff0c 图 xff0c 甚至 PDF 和 Excel HDF5 中的数据存储在不同组 Group 中 xff0c 类似于 Linux 文件树结构