问题标签 [h5py]

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 回答
2264 浏览

python - 在 Mac OS X 10.6.3 中安装 h5py

我正在尝试在 Mac OS X 10.6.3 中安装 h5py。

首先我安装了 HDF5 1.8,它使用了以下命令:

然后安装 h5py:

然后我得到了错误:

我刚刚更新了我的 Xcode,我不知道这是否是因为我的 gcc 的默认设置。如果是这样,我怎样才能摆脱这个错误?

谢谢。

0 投票
4 回答
6715 浏览

python - 将 h5py 数据集输出到文本的快速方法是什么?

我正在使用 h5py python 包读取 HDF5 格式的文件。(例如 somefile.h5) 我想将数据集的内容写入文本文件。

比如我想创建一个文本文件,内容如下:1,20,31,75,142,324,78,12,3,90,8,21,1

我可以使用以下代码访问 python 中的数据集:

我天真的方法太慢了,因为我的数据集有超过 20000 个条目:

有没有更快的方法将其写入文件?也许我可以将数据集转换为 NumPy 数组甚至 Python 列表,然后使用一些文件编写工具?

(我可以在写入文件之前尝试将值连接成一个更大的字符串,但我希望有一些更优雅的东西)

0 投票
2 回答
8660 浏览

python - 有使用 h5py 在 Python 中对大数据进行分析工作的经验吗?

我做了很多统计工作,并使用 Python 作为我的主要语言。虽然我使用的一些数据集可能占用 20GB 的内存,这使得使用 numpy、scipy 和 PyIMSL 中的内存函数对它们进行操作几乎是不可能的。统计分析语言 SAS 在这里有一个很大的优势,它可以对来自硬盘的数据进行操作,而不是严格的内存处理。但是,我想避免在 SAS 中编写大量代码(出于各种原因),因此我试图确定我对 Python 有哪些选择(除了购买更多的硬件和内存)。

我应该澄清,像 map-reduce 这样的方法对我的大部分工作没有帮助,因为我需要对完整的数据集进行操作(例如计算分位数或拟合逻辑回归模型)。

最近我开始使用h5py并认为它是我发现的最好的选择,它允许 Python 像 SAS 一样运行并操作来自磁盘的数据(通过 hdf5 文件),同时仍然能够利用 numpy/scipy/matplotlib 等。我想知道是否有人有在类似环境中使用 Python 和 h5py 的经验以及他们发现了什么。有没有人能够在迄今为止由 SAS 主导的“大数据”设置中使用 Python?

编辑:购买更多硬件/内存肯定会有所帮助,但从 IT 的角度来看,当 Python(或 R 或​​ MATLAB 等)需要将数据保存在内存中时,我很难将 Python 卖给需要分析大量数据集的组织. SAS 在这方面继续拥有强大的卖点,因为虽然基于磁盘的分析可能较慢,但您可以自信地处理庞大的数据集。因此,我希望 Stackoverflow-ers 可以帮助我弄清楚如何降低使用 Python 作为主要大数据分析语言的感知风险。

0 投票
2 回答
2770 浏览

python - 如何扩展 h5py 以便我可以访问 hdf5 文件中的数据?

我有一个小的 python 程序,它使用 h5py 模块创建一个 hdf5 文件。我想编写一个 python 模块来处理 hdf5 文件中的数据。我怎么能那样做?

更具体地说,我可以将 numpy 数组设置为 PyArrayObject 并使用 PyArg_ParseTuple 读取它们。这样,我可以在编写 python 模块时从 numpy 数组中读取元素。如何读取 hdf5 文件以便我可以访问单个元素?

更新:感谢以下答案。我需要从 C 而不是从 Python 读取 hdf5 文件-我知道该怎么做。例如:

现在我有一个名为 '\tmp\tmp.h5' 的 hdf5 文件。我需要做的是使用 C(而不是 python)从 hdf5 文件中读取单个数组元素,以便我可以对这些元素做一些事情。显示了如何扩展 numpy 数组。如何扩展hdf5?

编辑:语法

0 投票
3 回答
32710 浏览

python - 用 Python 编写 HDF5 文件的最快方法是什么?

给定一个包含混合文本/数字的大型(10 GB)CSV 文件,在保持内存使用合理的同时,创建具有相同内容的 HDF5 文件的最快方法是什么?

如果可能的话,我想使用该h5py模块。

在下面的玩具示例中,我发现了一种将数据写入 HDF5 的非常慢且非常快的方法。以 10,000 行左右的数据块写入 HDF5 是否是最佳实践?或者有没有更好的方法将大量数据写入这样的文件?

0 投票
2 回答
2242 浏览

python - 具有 h5py 的复合数据类型:属性内的数据类型

我将Silo与 HDF5 一起使用,但在使用 h5py 访问某些元数据时遇到了问题。它吐出一些相当不寻常的 HDF5 结构,其中将DATATYPE一个DATATYPE. 以下是输出的摘录h5dump

基本上,f['sigma_t'].attrs['silo']返回tuple所有格式正确的数据,但没有数据类型的任何关联标签。(我需要知道名字meshidvalue0等等)有没有办法得到这个?我不知所措。

示例文件和脚本

HDF5 文件包含“sigma_t”字段,实际数据存储在/.silo/#000004.

脚本:

结果:

我还想要的是:

这可能吗?

0 投票
2 回答
3607 浏览

python - 在 OS X 上安装 h5py

我花了一天时间试图让h5pypython 模块工作,但没有成功。我已经安装了 HDF5 共享库,按照我在网上可以找到的说明进行操作。但它不起作用,下面是我在尝试将模块导入 python 时收到的错误消息。我也尝试通过 MacPorts 安装,但它再次无法正常工作。

我正在使用 Python27 32 位(对于另一个模块也有,因此安装了 i386 HDF5 库......如果是这样的话?)

非常欢迎任何帮助!

谢谢 !

0 投票
2 回答
560 浏览

python - 使用 h5py 对象作为实例变量的令人费解的赋值行为

我正在使用 h5py 访问 HDF5 文件并将 h5py 文件对象存储在一个类中。但是我在尝试用一个新的重新分配一个封闭的 h5py 文件实例变量时遇到了一些奇怪的行为:

输出:

尝试使用新打开的 h5py File 对象更新实例变量似乎以某种方式影响了对象的状态,将其关闭。不管 h5py 方面的实现如何,从我对 Python 语言的理解来看,我看不出这种行为有什么意义(即没有重载赋值运算符)。

此示例使用 Python 2.6.5 和 h5py 1.3.0 运行。如果您想尝试此示例但没有 HDF5 文件,您可以将文件访问模式从“r”更改为“a”。

0 投票
1 回答
2779 浏览

python - Python HDF5 H5Py 问题打开多个文件

我使用 64 位版本的 Enthought Python 来处理跨多个 HDF5 文件的数据。我在 64 位 Windows 上使用 h5py 版本 1.3.1 (HDF5 1.8.4)。

我有一个对象,它为我的特定数据层次结构提供了一个方便的接口,但是单独测试 h5py.File(fname, 'r') 会产生相同的结果。我正在遍历一个长列表(一次约 100 个文件)并尝试从文件中提取特定的信息。我遇到的问题是我从几个文件中获取了相同的信息!我的循环看起来像:

当我使用 hdfview 之类的东西检查文件时,我知道内部结构不同。但是,我得到的 csv 似乎表明所有文件都包含相同的数据。有没有人见过这种行为?有什么建议可以让我开始调试这个问题吗?

0 投票
1 回答
915 浏览

python - 用于 Python 的 HDF5:高级与低级接口。h5py

我一直在使用C和处理 HDF5 文件Matlab,两者都使用相同的方式读取和写入数据集:

  • 打开文件h5f
  • 打开数据集h5d
  • 选择空间h5s

等等...

但是现在我正在使用Python它,并且通过它的h5py库,我看到它有两种管理 HDF5 的方法:高级接口和低级接口。而对于前者,从文件的单个变量中获取信息所需的代码行数更少。

使用高级接口时是否有明显的性能损失?
例如,当处理一个包含许多变量的文件时,我们必须只读取其中一个。