问题标签 [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 回答
1926 浏览

python - 调整numpy或数据集大小的有效方法?

我想了解resize()function 对numpyarray 与 an 的影响h5py dataset。在我的应用程序中,我正在逐行读取文本文件,然后在解析数据后写入hdf5文件。什么是实现这一点的好方法。我应该将每个新行添加到一个numpy数组中并继续调整numpy 数组的大小(增加轴)(最终将完整的 numpy 数组写入 h5py 数据集),还是应该直接将每个新行数据添加到内存中h5py dataset,从而调整h5py dataset内存的大小。resize()如果我们在每一行之后继续调整大小,函数如何影响性能?或者我应该在每 100 行或 1000 行之后调整大小?

每个数据集中可能有大约 200,000 行。

任何帮助表示赞赏。

0 投票
1 回答
409 浏览

python - 在 h5py 中混合高级和低级接口

我想知道是否有一种方法可以使用 h5py 将高级 API 与低级 API 混合。

示例:我有一个通过高级接口访问的 hdf5 文件。

现在,该ds对象是一个h5py.Dataset,它非常适合我需要做的大部分事情。但是,我想弄清楚这个数据集存储在磁盘上的大小。低级接口提供h5py.h5d.DatasetID.get_storage_space()这正是我想要的,但我不知道如何从我的高级对象调用它。

有没有办法从高级 API 中找到底层的低级对象?

0 投票
1 回答
2305 浏览

python - 大型 numpy (HDF5) 数组的统计信息

我有相当大的 4D 数组 [20x20x40x15000],我使用h5py作为 HDF5 文件保存到磁盘。现在的问题是我想计算整个数组的平均值,即使用:

我得到一个MemoryError. 似乎 numpy 试图将 HDF5 文件加载到内存中以执行平均?

有没有人对这个问题有一个优雅而有效的解决方案?

0 投票
1 回答
618 浏览

python - Python垃圾收集器有问题吗?

我有一个简单的程序,它读取一个包含几百万行的大文件,解析每一行(numpy array)并转换成一个双精度数组(python array),然后写入一个hdf5 file. 我重复这个循环好几天。读取每个文件后,我删除所有对象并调用垃圾收集器。当我运行程序时,第一天解析没有任何错误,但第二天我得到了MemoryError. 我监控了我的程序的内存使用情况,在解析的第一天,内存使用量约为1.5 GB。第一天解析完成后,内存使用量下降到50 MB。现在当第二天开始时,我尝试从我得到的文件中读取行MemoryError。以下是程序的输出。

我非常确定 Windows 系统任务管理器显示此进程的内存使用量为50 MB。看起来 Python 的垃圾收集器或内存管理器没有正确计算可用内存。应该有很多可用内存,但它认为没有足够的内存。

任何的想法?

编辑

在这里添加我的代码

我将放置我的部分代码。我是 python 新手,请原谅我的 python 编码风格。

模块 1

模块 2 - taqdb - 将解析后的数据存储在数组中

模块 3- 解析器

谢谢。

0 投票
2 回答
3869 浏览

python - 读取多个 hdf5 文件并将它们附加到新字典

我有一个hdf5文件列表,我想打开这些文件并将适当的值读入新字典并最终写入文本文件。我不一定知道这些值,所以用户将它们定义在一个数组中作为代码的输入。所需文件的数量由用户想要查看的数据的天数定义。

如果我只有一个文件,这很好用,但如果我有两个或更多文件,它似乎关闭了密钥?我不确定这是否正是发生的事情,但是当我问是什么时new_data_dic,它给出的值{'Bfs_geo_a': <Closed HDF5 dataset>,...不会写入文本文件。我尝试在打开下一个(rbsp_ephm.close())之前关闭 hdf5 文件,但我得到了同样的错误。

感谢您的任何帮助!

0 投票
1 回答
195 浏览

python - 使用指针的 h5py 对称数组

我一直在寻找一种方法来创建最终对称的自定义 h5py 数组。理想情况下,它将是一个数组,这样当它被创建时有一个单一的值a[i][j]a[j][i]指向。这样做的原因是我会将一个大距离向量写入一个方形矩阵。向量和方阵太大而无法保存在内存中,所以我想要一个相对快速的解决方案来创建方阵。

0 投票
1 回答
465 浏览

python - python递归函数并返回非可变字典

我试图让函数 VisitAllObjects 接受不同的文件并返回一个字典。但是我目前有什么指向同名?因此,一旦 gdata 运行,fdata 就会更改为 gdata。我怎样才能使它 fdata 和 gdata 等于他们的 gh5 文件中的尊重数据?

在您的帮助下并在调用 visit_all_objects 时添加 file_info ,我能够让它工作。如果您发现这有任何问题,请告诉我,我仍然需要进一步检查,但使用 fdata 和 gdata 会返回不同的数据并且fdata is gdata是 False。谢谢。

我得到它与以下工作:

0 投票
3 回答
3857 浏览

python - 使用 h5py 高级接口时如何设置缓存设置?

我正在尝试增加 HDF5 文件的缓存大小,但它似乎不起作用。这就是我所拥有的:

这是输出:

知道为什么阅读有效,但设置无效吗?
关闭和重新打开文件似乎也无济于事。

0 投票
4 回答
11012 浏览

python - 使用 h5py 访问数据范围

我有一个包含 62 个不同属性的 h5 文件。我想访问他们每个人的数据范围。

在这里解释更多我在做什么

前面的代码给了我一个属性列表“U”,“T”,“H”,......等

假设我想知道“U”的最小值和最大值是多少。我怎样才能做到这一点 ?

这是运行“h5dump -H”的输出

0 投票
1 回答
2702 浏览

python - h5py 内存中文件和多处理错误

这是给你的 HDF5多处理专家...首先,我知道 python h5py 和多处理模块不一定彼此喜欢,但是我遇到了一个我无法弄清楚的错误。我正在处理的脚本创建一个临时的内存中hdf5 文件,将来自(pickle)输入文件的数据存储在内存文件中,然后一个多处理池对来自 temp 的数据执行(只读)操作HDF5 文件。

我已经能够隔离导致错误的代码,所以这里有一个简化的代码片段。当我在生成器函数中创建内存中的hdf5 文件,然后使用该生成器为多处理池生成参数时,我得到了一系列 HDF5 错误。这里有一些代码很简单,我可以让它重新创建错误:

当我使用 itertools.imap(设置“useMP=False”)时,我得到以下输出,如预期的那样:

但是当我使用 Pool.imap 时,即使池仅使用单个工作线程创建,我也会得到以下输出:

奇怪的是,这个错误不会使程序崩溃。我正在编写的导致此错误的脚本实际上按我的预期工作 - 但它为它创建的每个内存文件提供了上述错误。使用 itertools.imap 时没有错误,读取现有 HDF5 文件时没有错误,只有多处理和内存中 HDF5 文件的组合。

h5py 版本 2.1.1

hdf5 版本 1.8.9

Python 版本 2.7.3