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 存储开销 的相关文章

  • 使用 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
  • 将使用-v7.3(HDF5)保存的Matlab稀疏矩阵加载到Python中并对其进行操作

    我是 python 新手 来自 matlab 我有一个以 matlab v7 3 HDF5 格式保存的大型稀疏矩阵 到目前为止 我发现了两种加载文件的方法 使用h5py and tables 然而 在这两种方法之后 在矩阵上的操作似乎都非常
  • 什么样的工作受益于 OpenCL

    首先 我很清楚 OpenCL 并没有神奇地让一切变得更快 我很清楚 OpenCL 有局限性 现在回答我的问题 我习惯使用编程进行不同的科学计算 我处理的一些事情在计算的复杂性和数量方面非常激烈 所以我想知道 也许我可以使用 OpenCL 来
  • 如何将大型多维数组部分写入 HDF5 文件?

    我在 C 中使用 HDF5DotNet 并且有一个非常大的数组 几个 GB 我想将其写入 HDF5 文件 它太大了 无法将整个内容存储在内存中 因此我一次生成它的区域并想将它们写出来 但在读回时仍然让它看起来像一个大数组 我知道 HDF5
  • 在 Windows 上使用 HDF5 库和 CMake(错误:“无法找到 HDF5”)

    我想在我的 C 程序中使用 HDF5 库 我在Windows 7上使用VS 2010 x64编译器和CMake 3 8 0rc2 我安装的HDF5版本是1 8 10 通过运行官方 安装程序 安装 在我的 CMakeLists 文件中 我添加
  • 使用另一个 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
  • 使用 C 编译器选项捕获浮点异常 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 Gfortran有得心应手的 ffpe trap编译器选项 但没有类似的选项可用gcc 我隐约意识到他们处理异常的方式不同 但不足以知道为什
  • h5py:正确读取 MATLAB 中存储的“表”类的问题 (.mat -7.3)

    我正在尝试使用 h5py 模块在 Python 3 8 中导入 MATLAB mat 7 3 文件 该文件包含一个结构类和table班级 我成功导入了结构类对象 但是 那table导入后类显示错误的尺寸 import h5py Path d
  • C/C++ HDF5 读取字符串属性

    我的一位同事使用labview在HDF5文件中写入一个ASCII字符串作为属性 我可以看到该属性存在并读取它 但无法打印它 该属性如 HDF Viewer 中所示 日期 2015 07 09 所以 日期 就是它的名字 我正在尝试使用此代码读
  • 在 Python 中将分层 pandas DatetimeIndex 保存到 hdf5 时丢失时区感知

    我使用的是 pandas 0 14 1 假设我需要使用时区按分层索引中的两个时间戳对数据进行索引 将生成的 DataFrame 保存到 hdf5 时 我似乎失去了时区意识 import pandas as pd dti1 pd Dateti
  • 存储和查询气象数据大数据集的更好方法是什么

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

    我将 pandas 中的数据帧保存在 HDF5 文件中 import numpy as np import pandas as pd np random seed 1 frame pd DataFrame np random randn 4
  • 如何在R中处理hdf5文件?

    我有一个文件在hdf5格式 我知道它应该是一个矩阵 但我想在其中读取该矩阵R这样我就可以研究它 我看到有一个h5r包应该有助于解决这个问题 但我没有看到任何简单易读 理解的教程 网上有这样的教程吗 具体来说 你如何阅读hdf5这个包的对象
  • 将 hdf5 库(java 和 c++)添加到公共 Maven 存储库?

    是否有一个公共 Maven 存储库 我或其他人可以在其中放置 HDF java 和 HDF C 库 我没有 Maven 存储库 并且我不想自己为这些 3rd 方库设置一个存储库 肯定有更多人使用 HDF 库并希望将它们用作 Maven 项目
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • 使用h5py删除hdf5数据集

    有没有办法从 hdf5 文件中删除数据集 最好使用 h5py 或者 是否可以覆盖一个数据集 同时保持其他数据集完好无损 据我了解 h5py可以以5种模式读取 写入hdf5文件 f h5py File filename hdf5 mode 其
  • 如何使用Python和h5py读取HDF5属性(元数据)

    我有一个 HDF5 文件 里面有多个文件夹 每个文件夹都添加了属性 有些将属性称为 元数据 我知道如何访问文件夹内的键 但不知道如何使用 Python 提取属性h5py包裹 以下是 HDFView 的属性 Folder1 800 4 Gro

随机推荐

  • 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