问题标签 [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 投票
3 回答
15709 浏览

python - 使用 python 的 h5py 包读取 hdf 文件时出错

我想从我从MODIS网站下载的 hdf 文件中提取数据。链接中提供了示例文件。我正在使用以下代码行读取 hdf 文件:

我得到的错误:

我已经尝试了来自不同来源的其他几个 hdf 文件,但我得到了同样的错误。这里似乎有什么问题?

0 投票
1 回答
2269 浏览

python - 使用 Python 从保存在 H5 文件中的非常大的数据集生成 pcolormesh 图像

我正在收集大量数据,这些数据将使用 h5py 保存到单个 H5 文件中。我想将这些图像拼凑成一个 pcolormesh 图以保存为单个图像。

我一直在研究的一个快速示例生成 2000x2000 随机数据点的数组,并使用 h5py 将它们保存在 H5 文件中。然后我尝试导入这些文件中的数据并尝试在 matplotlib 中将其绘制为 pcolormesh,但我总是遇到 memoryError(这是预期的)。

该脚本生成我的文件。我选择了 100 作为任意数字,只是为了有足够大的文件集可供提取。

然后我使用以下脚本导入它们:

for 循环中的范围值可以更改到 100,但我可以选择的最大值没有内存错误是 5(即可以在 matplotlib 中的 pcolormesh 图上修补 5 个图),而且它非常笨重和缓慢。我需要能够将许多图像拼凑在一起。

我应该使用其他任何技术来绘制这些数据吗?或者,如果我可以将多个 H5 文件中的数据转换为图像而不通过 matplotlib 或类似程序(如 scipy),那就太好了。

总之,我的问题是这样的:

  • 我有大量带有图像数据 (2000x2000) 的 HDF5 文件
  • 我需要将这些文件拼凑成一个图像并保存

任何帮助表示赞赏。另外,我很乐意回答有关我的问题的任何进一步问题。


编辑(5.6.2013):

我觉得类似的问题是如何在 Python 中处理(导入、操作、编辑等)非常高分辨率的图像。这基本上就是我想要做的;从一组较小的图像中生成非常高分辨率的图像。

0 投票
1 回答
1282 浏览

python - 如何逐行保存图像?

我有一台相机,可以拍摄高分辨率图像并将它们存储为大矩阵。我正在尝试从数据中构建图像。(并且必须在 Python-32 位中完成。)

数据保存在 HDF5 中,我使用 h5py 访问它,但我无法在没有内存错误的情况下绘制数据,因为我知道的所有方法都需要将所有数据转储到计算机的内存中。(我只熟悉常用的 matplotlib 和 scipy 库。)

另外,当我尝试从数据中生成图像时,我遇到了同样的问题,但是在我之前提出的问题(在 Python 中构建高分辨率图像)中,有人告诉我 GDAL 能够从数据中生成图像。

我做了一些研究(似乎 GDAL for python 没有很好的文档记录)并遇到了这个问题:你可以在不加载整个图像的情况下遍历图像中的像素吗?. 提供的答案提供了一个快速脚本,可以逐行导入图像。有没有办法与此相反并逐行保存图像?这样我就不必将所有数据加载到内存中来保存图像。

或者是否有一种方法可以从 HDF5 数据集生成图像(最好是 PNG),该数据集太大而无法加载到内存中?

这是我一直在使用的一些示例代码:

它生成一个 10000x10000 的矩阵,并使用 h5py 将其保存在 H5 文件中。我关闭文件并重新打开它。然后我尝试保存图像或绘制数据(我注释掉了三种方法中的两种来测试每种方法)。

如果有人可以提供一些示例代码,允许我将存储在 H5 文件中的这个数组保存为 PNG 图像,我将不胜感激。

0 投票
2 回答
140 浏览

python - Python字典太满还是别的什么?

我有大约 1300 个 h5 文件可以使用 h5py 排序到字典中。当我在大约 250 个文件上运行我的代码时,它工作正常,但是任何更大的文件都会给我错误:

我不确定我是否错误地设置了字典,或者是否有更好的方法来做到这一点。

如果有人能看到我犯的一些明显错误,这是我的代码:

任何帮助/建议/见解将不胜感激:)

0 投票
1 回答
434 浏览

numpy - 在 h5py 中用相同的复合数据值填充数据集的快速方法

我在 hdf 文件中有大量的复合数据数据集。复合数据的类型如下所示:

有了它,我创建了一个数据集,其中引用了每个位置的图像和另一个数据集。这些数据集的维度为 nxn,n 通常至少为 256,但更有可能 > 2000。我必须最初用相同的值填充这些数据集的每个位置:

我尽量避免用两个 for 循环填充它,例如:

因为性能很差。所以我正在寻找类似numpy.fill, numpy.shape, numpy.reshape, numpy.array,numpy.arrange等的东西[:]。我以各种方式尝试了这些函数,但它们似乎都只适用于数字和字符串数据类型。有什么方法可以比 for 循环更快地填充这些数据集?

先感谢您。

0 投票
1 回答
810 浏览

python - 如何在 python 中定义 hdf5 堆栈的空间参考系统?

我是 h5py 的新手,我的实际任务是创建一个带有 MODIS 子集的 hdf5 堆栈。我可以创建包含所有好数据的堆栈,但我无法创建或附加空间参考系统。目标是将堆栈中的单个数据集加载到 ArcGIS 中的查看器中,并且应将其放置在正确的位置。

如何为堆栈提供正确的空间/投影信息?

0 投票
0 回答
360 浏览

python - 在python中合并netcdf文件

我正在尝试运行一个 python 脚本来聚合 HDF5 数据文件。但它显示一个错误。有人能弄清楚吗?我是 python 新手。任何帮助将非常感激。下面给出的程序

错误是

0 投票
1 回答
838 浏览

python - 使用 H5py 到现有数据集的列堆栈和行堆栈

我正在尝试使用 Python 将 HDF5 文件中的列堆栈和行堆栈数据与其他数据一起使用。我正在从相机记录图像并将它们保存到单个文件中。然后我希望能够生成一个将所有图像拼凑在一起的单个文件。因此,我希望能够在一个新文件中创建一个数据集,并将每个图像文件中的所有数组堆叠到一个文件中。

我知道 h5py 允许我使用像 numPy 数组这样的数据集,但我不知道如何告诉 h5py 再次将数据保存到文件中。下面我有一个非常简单的例子。

我的问题是如何将 HDF5 文件中的数据与第二个数组 (arr2) 进行列堆叠,以便将 arr2 保存到文件中?

(注意:在我的实际应用中,文件中的数据会比示例中的大很多。因此,将数据导入内存,列堆叠,然后重写到文件中是不可能的。)

这似乎是一个微不足道的问题,但我所有的搜索都没有成功。提前致谢。

0 投票
1 回答
379 浏览

numpy - h5py 选择性读入

我在使用 h5py 时遇到了关于选择性读入例程的问题。

我在“数据”数据集中有几个正值,还有一些带有 -9999 的占位符。我如何才能获得所有计算的正值,例如np.min

np.ma.masked_array 创建了数组的完整副本,使用 h5py 的所有好处都丢失了……(关于内存使用)。问题是,如果我尝试使用每个数据集读取超过 1 亿个值的数据集,则会出现错误data = f['Data'][:,0]

或者,如果这是不可能的,那么可能吗?

提前致谢

0 投票
1 回答
6366 浏览

hdf5 - h5py 是否能够自动将 python 字典转换为 hdf5 组?

我一直在使用 scipy.io 来保存我的结构化数据(用不同形状的 ndarray 填充的列表和字典)。由于 v7.3 mat 文件有一天会取代旧的 v7 mat 格式,我正在考虑切换到 HDF5 来存储我的数据,更具体地说是用于 python 的 h5py。但是,我注意到我不能像这样简单地保存我的字典:

相反,我必须一一使用 h5py.create_group 来复制 python 字典中的结构。对于非常大的结构,这是不可行的。有没有一种简单的方法可以自动将 python 字典转换为 hdf5 组?

谢谢!

-肖恩