问题标签 [hdf5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1632 浏览

hdf5 - 使用 pyTables 创建的表的 Windows 上的 hdf 查看器?

viTables似乎只适用于 python 2.5。我已经下载了 HDFView,但是当我尝试打开按照本教程创建的表时,我收到以下错误消息:

让 HDFView 工作的任何想法?当我使用 python 中的 pyTables 使格式更通用时,我需要做些什么吗?还有其他好的 HDF 查看器吗?

顺便说一句,我刚刚发现了 PyTables,我对此感到非常兴奋。

0 投票
3 回答
6921 浏览

sparse-matrix - HDF5 中的稀疏数组支持

我需要以某种方式在磁盘上存储一个 512^3 数组,我目前正在使用 HDF5。由于阵列稀疏,因此浪费了大量磁盘空间。

HDF5 是否提供对稀疏数组的任何支持?

0 投票
2 回答
6822 浏览

python - Google Protocol Buffers、HDF5、NumPy 比较(传输数据)

我需要帮助来做决定。我需要在我的应用程序中传输一些数据,并且必须在这 3 种技术之间做出选择。我已经阅读了所有技术(教程,文档),但仍然无法决定......

他们如何比较?

我需要支持元数据(能够接收文件并在没有任何附加信息/文件的情况下读取它)、快速读/写操作、存储动态数据的能力将是一个加分项(如 Python 对象)

我已经知道的事情:

  • NumPy非常快,但不能存储动态数据(如 Python 对象)。(元数据呢?)
  • HDF5非常快,支持自定义属性,易于使用,但不能存储 Python 对象。HDF5 也原生序列化 NumPy 数据,因此,恕我直言,NumPy 与 HDF5 相比没有优势
  • Google Protocol Buffers也支持自我描述,速度非常快(但目前对 Python 的支持很差,速度慢而且有问题)。可以存储动态数据。缺点 - 自我描述在 Python 中不起作用,并且 >= 1 MB 的消息序列化/反序列化速度不是很快(阅读“慢”)。

PS:我需要传输的数据是 NumPy/SciPy 的“工作结果”(数组、复杂结构的数组等)

UPD:需要跨语言访问(C/C++/Python)

0 投票
3 回答
6205 浏览

python - HDF5:存储 NumPy 数据

当我使用 NumPy 时,我以原生格式 *.npy 存储它的数据。它非常快并且给了我一些好处,比如这个

  • 我可以从 C 代码中读取 *.npy 作为简单的二进制数据(我的意思是 *.npy 与 C 结构二进制兼容)

现在我正在处理 HDF5(此时 PyTables)。正如我在教程中所读到的,他们使用 NumPy 序列化程序来存储 NumPy 数据,所以我可以从 C 中读取这些数据,就像从简单的 *.npy 文件中一样?

HDF5 的 numpy 是否也与 C 结构二进制兼容?

更新:

我有 matlab 客户端从 hdf5 读取,但不想从 C++ 读取 hdf5,因为从 *.npy 读取二进制数据要快几倍,所以我真的需要从 C++ 读取 hdf5(二进制兼容性)所以我已经使用两种方式来传输数据 - *.npy(从 C++ 读取为字节,从 Python 本地读取)和 hdf5(从 Matlab 访问)如果可能的话,想使用唯一的一种方式 - hdf5,但要做到这一点我有找到一种方法使 hdf5 与 C++ 结构二进制兼容,请帮助,如果有某种方法可以关闭 hdf5 中的压缩或其他方式使 hdf5 与 C++ 结构二进制兼容 - 告诉我在哪里可以读到它...

0 投票
1 回答
487 浏览

python - HDF5 内部数据组织和 NumPy 使用

正如 hdf5 文档所说,HDF5 使用 NumPy 存储数据

“它建立在 HDF5 库、Python 语言和 NumPy 包之上。它具有面向对象的接口,结合了对代码的性能关键部分的 C 扩展,使其快速且极其简单——交互式存储和检索大量数据的实用工具"

...

“PyTables 使用这些 NumPy 容器作为内存缓冲区,将 I/O 带宽推向平台限制。”

那么机制是什么?PyTables 是如何使用 NumPy 的?最后,它们生成可从其他语言访问的普通 hdf5 ......

0 投票
1 回答
1690 浏览

python - 将 2 个 hdf5 文件与 pytables 合并

ptrepack几乎是我想要的,除了它只有覆盖或忽略重复路径的选项。下面的例子说明了我想用结构发生什么

输入文件一

输入文件二

期望的输出

这样做的有效方法是什么?

0 投票
4 回答
1404 浏览

arrays - Mathematica HDF5 和复合阵列

有人在 Mathematica 中有解决方法来读取 HDF5 复合数组吗?我在表格中有一个简单的 2D 复合类型(int/float),但它目前被忽略了。

一个示例 HDF5 类型可能是:

0 投票
2 回答
3777 浏览

python - 通过 PyTables 或 PyHDF 将大文本文件“读入”到 hdf5?

我正在尝试使用 SciPy 进行一些统计,但我的输入数据集非常大(~1.9GB)并且采用 dbf 格式。该文件足够大,以至于当我尝试使用 genfromtxt 创建数组时,Numpy 会返回错误消息。(我有 3GB 内存,但运行的是 win32)。

IE:

从其他帖子中,我看到 PyTables 提供的分块数组可能很有用,但我的问题是首先读取这些数据。或者换句话说,PyTables 或 PyHDF 可以轻松创建所需的 HDF5 输出,但我应该如何首先将数据放入数组中?

例如:

然后我可以创建一个表或数组,但是我如何引用原始 dbf 数据呢?在说明中?

感谢您的任何想法!

0 投票
2 回答
3219 浏览

r - 在 Matlab 和 R 之间共享大型数据集

我需要一种相对有效的方式在 Matlab 和R之间共享数据。

我检查了SaveRMATLAB R-link,但是SaveR 首先将Matlab 的二进制数据 格式化为文本字符串,然后将它们打印到 ASCII 文件中,这对于大型数据集效率不高,并且MATLAB R-link仅适用于 Windows(它使用基于 COM 的接口)。

更新:

Dirk 发布了一个列表,其中列出了似乎比SaveRMatlab R-link更好的解决方案。我最近还了解了RAM 磁盘(有关一些实现示例,请参见此处此处),并认为它们可能有助于在 Matlab 和 R(或类似的计算环境)之间进一步共享大型数据集的任务。这导致我提出以下问题:

假设数据适合 Matlab 或 R 的本机数据容器中的机器内存:

  1. 到目前为止列出的任何解决方案是否更适合 RAM 磁盘?

  2. 在处理 RAM 磁盘而不是辅助存储解决方案时,是否还有其他需要考虑的因素?

谢谢!

0 投票
3 回答
6464 浏览

performance - Matlab中加载数据最快的方法是什么

我有大量数据(>800Mb)需要很长时间才能加载到 Matlab 中,主要是因为它被分成每个 <20kB 的小文件。它们都是专有格式,我可以读取并加载到 Matlab 中,只是需要很长时间。

我正在考虑读取数据并将其写入某种二进制文件,这应该可以更快地进行后续读取(其中可能有很多,因此我需要加快速度)。

所以,我的问题是,将它们写入磁盘以尽可能快地再次读取它们的最佳格式是什么?

我想我可以选择使用 fwrite 编写,或者只是从 matlab 中保存变量。我想我更喜欢 fwrite 选项,所以如果需要,我可以从另一种包/语言中读取它们......