HDF5 存储开销

2024-03-18

我正在将大量小数据集写入 HDF5 文件,生成的文件大小约为我所输入数据的简单制表所期望的文件大小的 10 倍。我的数据按层次结构组织如下:

group 0
    -> subgroup 0
        -> dataset (dimensions: 100 x 4, datatype: float)
        -> dataset (dimensions: 100, datatype: float)
    -> subgroup 1
        -> dataset (dimensions: 100 x 4, datatype: float)
        -> dataset (dimensions: 100, datatype: float)
    ...
group 1
...

每个子组应占用 500 * 4 字节 = 2000 字节(忽略开销)。我不将任何属性与数据一起存储。然而,在测试中,我发现每个子组占用大约 4 kB,大约是我预期的两倍。我知道有一些开销,但是它来自哪里,我该如何减少它?是代表团体结构吗?

更多信息: 如果我将每个子组中两个数据集的维度增加到 1000 x 4 和 1000,那么每个子组占用大约 22,250 字节,而不是我预期的 20,000 字节。这意味着每个子组的开销为 2.2 kB,并且与我使用较小数据集大小得到的结果一致。有什么办法可以减少这个开销吗?


我会回答我自己的问题。仅表示组结构所涉及的开销就足够了,存储小数组或拥有多个组(每个组仅包含少量数据)是没有意义的。似乎没有任何方法可以减少每组的开销,我测得约为 2.2 kB。

我通过将每个子组中的两个数据集合并为一个 (100 x 5) 数据集来解决此问题。然后,我消除了子组,并将每组中的所有数据集合并为 3D 数据集。因此,如果我之前有 N 个子组,那么现在每个组中有一个数据集,其形状为 (N x 100 x 5)。因此,我节省了之前存在的 N * 2.2 kB 开销。此外,由于 HDF5 的内置压缩对于较大的阵列更有效,因此我现在获得了优于 1:1 的整体打包比,而以前,开销占用了文件的一半空间,压缩完全无效。

我们的教训是避免 HDF5 文件中复杂的组结构,并尝试将尽可能多的数据合并到每个数据集中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDF5 存储开销 的相关文章

  • 在 python 中使用 h5py 读取或写入复合数据类型

    我想在一些 C matlab 和 python 代码中使用 hdf5 文件 我的 h5 文件在 C 和 matlab 中运行良好 但无法用 h5py 读取 h5py 不太支持像 H5T STD B64LE 这样的数据类型吗 谢谢 In 2
  • 如何在MATLAB中为随机数生成器设置统一种子?

    我正在编写代码并使用 MATLAB 中的现有函数 如果这些函数使用随机数生成器怎么办 有没有办法可以修复这些函数的种子而无需更改它们的代码 MATLAB 中有执行此操作的命令吗 通常代码会使用 Matlab 的内置随机数生成器 您可以使用以
  • 对于 python,安装 hdf5/netcdf4

    在 Linux Mint 17 1 上执行此操作 当我尝试时 pip install hdf5 我收到错误 Could not find a version that satisfies the requirement hdf5 from
  • 使用 scipy、numpy、python 等进行 sigmoidal 回归

    我有两个变量 x 和 y 它们彼此之间存在某种 S 型关系 并且我需要找到某种预测方程 使我能够在给定 x 的任何值的情况下预测 y 的值 我的预测方程需要显示两个变量之间的 S 形关系 因此 我不能满足于产生一条直线的线性回归方程 我需要
  • `pip install table` 失败并出现错误:: 找不到本地 HDF5 安装

    以下是我尝试在 Mac OSX 上安装 PyTables 时收到的详细错误消息 calvin pip install tables Downloading unpacking tables Downloading tables 2 4 0
  • C++ HDF5 找不到 -lhdf5d

    情况 我想创建一个程序来读取一些内容 hdf5 file 我做了什么 没什么 但添加hdf5 lib到项目 Problem 我收到两个错误 当我尝试运行该程序时 cannot find lhdf5d error ld returned 1
  • 辛积分器帮助

    我正在尝试开发物理模拟 并且想要实现四阶辛积分 http en wikipedia org wiki Symplectic integration方法 问题是我的数学一定是错误的 因为使用辛积分器时我的模拟根本不起作用 与模拟效果相当好的四
  • h5py 中的压缩文件更大

    我正在使用 h5py 从 python 以 HDF5 格式保存 numpy 数组 最近 我尝试应用压缩 但得到的文件大小更大 我从这样的事情 每个文件都有几个数据集 开始 self h5 current frame create datas
  • 如何将大型多维数组部分写入 HDF5 文件?

    我在 C 中使用 HDF5DotNet 并且有一个非常大的数组 几个 GB 我想将其写入 HDF5 文件 它太大了 无法将整个内容存储在内存中 因此我一次生成它的区域并想将它们写出来 但在读回时仍然让它看起来像一个大数组 我知道 HDF5
  • 在 iPython 中使用 HDF5 文件时出现异常“HDFStore 需要 PyTables”

    我对 Python 非常陌生 正在尝试使用 HDFStore 在 pandas 中创建一个表 如下所示 store HDFStore store h5 我得到例外 Exception Traceback most recent call l
  • MATLAB:.mat 版本之间的差异

    The 官方文档 http www mathworks com help matlab ref save html inputarg version陈述如下 But I have noticed that there are other i
  • HDF5:如何将数据附加到数据集(可扩展数组)

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

    我正在使用 h5py 将数值工作的中间数据存储在 HDF5 文件中 我的项目处于版本控制之下 但这不适用于 HDF5 文件 因为每次重新运行生成 HDF5 文件的脚本时 即使其中的数据没有变化 二进制文件也会发生变化 这是一个小例子来说明这
  • 如何在 Debian Linux 系统上以非 root 身份安装 h5py (+numpy+libhdf5+...)

    我需要在 Debian Linux 系统上安装 h5py Python 模块及其所有缺少的依赖项 这项任务因以下原因而变得复杂 我在这个系统上没有任何超级用户权限 没有 sudo 没有 root 密码等 我使用的其余代码需要 Python
  • 将多个 csv 文件读取到 HDF5 时出现 Pandas ParserError EOF 字符

    使用Python3 Pandas 0 12 我正在尝试将多个 csv 文件 总大小为 7 9 GB 写入 HDF5 存储以供稍后处理 每个 csv 文件包含大约 100 万行 15 列 数据类型主要是字符串 但也有一些浮点数 但是 当我尝试
  • 存储和查询气象数据大数据集的更好方法是什么

    我正在寻找一种便捷的方式来存储和查询大量气象数据 几TB 有关问题中间数据类型的更多信息 之前我一直在寻找 MongoDB 的方向 我自己之前的很多项目都使用过它 而且处理起来很舒服 但最近我发现了HDF5 http en wikipedi
  • 如何在python中读取Mat v7.3文件?

    我正在尝试阅读以下网站中给出的mat文件 ufldl stanford edu housenumbers 在文件train tar gz中 有一个名为digitStruct mat的mat文件 当我使用 scipy io 读取 mat 文件
  • 什么是适用于 .net (C#) 的优秀免费(开源)BLAS/LAPACK 库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个用 C 编写的项目 需要对矩阵进行各种线性代数运算 例如 LU 分解 由于该程序主要是为了证实
  • HDF5 - 并发、压缩和 I/O 性能 [关闭]

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

    当我尝试读取使用 h5py 创建的 HDF5 格式文件时 出现 pandas 错误 我想知道我是否只是做错了什么 import h5py import numpy as np import pandas as pd h5 file h5py

随机推荐

  • Vega-Lite 中的平行坐标?

    是否可以创建平行坐标维加精简版 https vega github io vega lite 我正在寻找一个简单但功能强大的 JavaScript 绘图库 并且需要支持平行坐标 I have googled https www google
  • 如何使用 PHP 将 RSS XML 提要转换为数组

    我希望标题代表全部 如何使用 PHP 将 RSS XML 提要转换为数组 如何才能做到这一点 例如 我正在使用以下网址 这导致了 XML 模式 我需要使用 PHP 将其转换为数组格式 任何帮助将不胜感激和感激 提前致谢 一步步 How to
  • 如何在没有 web.xml 的情况下将 App Engine 项目更新到 Java 11?

    我有一个应用程序引擎项目 Here https github com KevinWorkman GoogleCloudExamples tree master hello world是一个示例存储库 但它只包含几个文件 pom xml
  • viewWillAppear 子视图

    我有 UIScrollView 与多个 UIVIew 子视图 我想更新每个 UIView 显示在 UIScrollView 的可见部分中时显示的数据 触发的回调是什么 我尝试了 viewWillAppear 但似乎没有被调用 谢谢 你必须自
  • XQuery 中的 element() 与 node()

    有人可以告诉我两者之间的确切区别吗node and element XQuery 中的类型 该文档指出element 是一个元素节点 而node 是任何节点 所以如果我理解正确的话element 是一个子集node 问题是我有一个像这样的
  • 如何覆盖 Qwik 中的默认 404 屏幕?

    我正在测试 Builder IO 中的 Qwik Javascript 框架 但找不到任何文档可以指导我自定义 404 页面的方向 我正在使用 Qwik 的 qwik city 插件 核实 这是关于如何渲染404页面的 https qwik
  • 查找到另一组任意点的范围内的所有点

    我有两组点A and B 我想找到所有点B是在一定范围内的r to A 其中一点b in B据说在范围内r to A如果至少有一个点a in A其 欧几里得 距离b等于或小于r 两组点中的每一个都是连贯的点集 它们是根据两个不重叠对象的体素
  • 无法获得多视图控制来更改视图

    我有一个多视图控件 有两个视图 View1 是默认视图 View2 是新视图 当最终用户单击按钮时 我想将视图更改为 View2 无论如何我似乎都无法实现这一目标 ASP NET 代码
  • python/pycharm项目在调试模式下产生分段错误,但在运行模式下不会产生分段错误

    奇怪的是 在调试模式下 如果脚本在通常会发生段错误 没有断点 的地方停止 通过断点 然后恢复 则不会发生段错误 很奇怪吧 本项目使用pycharm和pygame 操作系统是 windows 10 该项目包含跨 8 个模块的约 1500 行代
  • 如何在 Qt 应用程序中使用样式表更改 QPushButton 图标大小

    是否可以使用样式表设置和更改 QPushButton 上的图标大小 我需要这个基于 qt 的模板 客户可以使用样式表对其进行样式化 在样式表中使用以下代码 qproperty iconSize 24px
  • 如何将 SQL 大容量复制与 Dapper .Net 结合使用?

    我正在使用 Dapper net 在 SQL 表中进行批量插入操作 我正在考虑使用 SQKBulk Copy 与 Dapper Net 但没有任何经验如何将 SqlbulkCopy 与 Dapper Net 一起使用 非常感谢你的帮助 使用
  • Windows 7 和 Windows Server 2008 R2 之间的差异

    Windows 7 或 Windows Server 2008 R2 中包含某些功能和 API 但另一个则不包含 在哪里可以找到差异的具体列表 如果程序要兼容两者 有什么需要特别避免的吗 当然 这个问题可以推广到任何版本的 Windows
  • Sapper/Svelte 可以有条件地导入组件吗?

    在 Sapper 中 我仅在客户端渲染时才尝试导入组件 使用onMount 有没有类似React的东西Suspense and React lazy 或者还有其他方法吗 你当然可以这样做 是的
  • Cordova 应用程序 - 构建工具错误 - Gradle

    我有一个科尔多瓦应用程序 重装系统后无法编译 我遇到了错误 Error No installed build tools found Please install the Android build tools version 19 1 0
  • 如何在 Tensorflow 的图形管道中解码 Unicode 字符串

    我创建了一个 tfRecord 文件来存储数据 我必须存储印地语文本 因此我使用 string encode utf 8 将其保存在字节中 但是 我在读取数据时陷入困境 我正在张量流数据集 API 的帮助下读取数据 我知道我可以使用 str
  • 正确的代码流程:调度动作并阻止,或者如果调度它们则提前验证?

    这是我前端开发自学一年后在Stackoverflow上的第一个问题 我已经为我的疑问找到了答案 但由于这些问题第三次出现 我认为现在是向网络提问的时候了 我正在尝试构建什么 我正在尝试建立一个图书馆服务 访客用户可以登录 预订书籍 添加到愿
  • 类型错误:func.apply 不是函数

    我正在尝试使用 useEffect 函数 如下所示 const data setData useState courses useEffect async gt const result await axios get http examp
  • Go http.Get、并发和“对等方重置连接”

    我有1000 2000个网页需要从一台服务器下载 并且我使用go例程和通道来实现高效率 问题是 每次我运行程序时 最多 400 个请求会失败 并出现错误 连接被对等方重置 很少 可能十分之一 没有请求失败 我可以做什么来防止这种情况发生 一
  • 如何将 apply_ufunc 与 numpy.digitize 一起用于沿 xarray.DataArray 时间维度的每个图像?

    为了清楚起见 我已经重新表述了我之前的问题 根据 Ryan 在单独频道上的建议 numpy digitize 看起来是实现我的目标的正确工具 我有一个形状为 x y 和时间的 xarray DataArray 我试图弄清楚我应该向apply
  • HDF5 存储开销

    我正在将大量小数据集写入 HDF5 文件 生成的文件大小约为我所输入数据的简单制表所期望的文件大小的 10 倍 我的数据按层次结构组织如下 group 0 gt subgroup 0 gt dataset dimensions 100 x