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

python - 在 Python 中存储大型非结构化列表

你知道有哪些 Python 库可以很好地存储大型非结构化列表(例如a=[0,numpy.asarray([1,2,3])])吗?

到目前为止我所看到的 h5py 不支持这种数据,并且 pickle 似乎很慢。还有其他选择吗?

出于我的目的,我们可以假设我正在处理相同类型的数据(具有 int 类型的 numpy 数组)但形状不同。

0 投票
6 回答
31620 浏览

python - 合并 hdf5 文件

我有许多 hdf5 文件,每个文件都有一个数据集。数据集太大而无法保存在 RAM 中。我想将这些文件组合成一个单独包含所有数据集的文件(即不要将数据集连接成一个数据集)。

一种方法是创建一个 hdf5 文件,然后一个一个地复制数据集。这将是缓慢而复杂的,因为它需要缓冲副本。

有没有更简单的方法来做到这一点?似乎应该有,因为它本质上只是创建一个容器文件。

我正在使用 python/h5py。

0 投票
2 回答
456 浏览

python - h5py:将 numpy 数据转换为原生 python 类型

我正在通过 h5py 将一些数据保存到 HDF5 文件中。它们是混合类型的数据,有些是适当的 numpy 数组,许多是标量或字符串。标量和字符串由 h5py 自动“编码”为 numpy 数组(这非常好),但我现在想做相反的事情:读取这些数据时,将其转换为本机 python 类型,而不是将标量视为 0d 形状, 字符串<HDF5 dataset "plots": shape (), type "|S207">等。

有没有一种简单的方法可以实现这一点,而无需我手动检查数组 dtype?

每次转换都会创建一个额外的对象,这很好。

0 投票
1 回答
1728 浏览

python - Performance issue with loop on datasets with h5py

I want to apply a simple function to the datasets contained in an hdf5 file. I am using a code similar to this

It goes very fast at the beginning and after a certain number, reproducible to some extent, of datasets it slow down dramatically. If I comment the last line, it finishes almost instantly. It does not matter if the data are stored (here append to a list) or not: something like data[:100] as a similar effect. The number of datasets that can be treated before the drop in performance is dependent to the size of portion that is accessed at each iteration. Iterating over smaller chunks does not solve the issue.

I suppose I am filling some memory space and that the process slows down when it is full but I do not understand why.

How to circumvent this performance issue?

I run python 2.6.5 on ubuntu 10.04.

Edit: The following code does not slow down if the second line of the loop is un-commented. It does slow down without out it

Edit: I found out that accessing the first dimension of multidimensional datasets seems to run without issues. The problem occurs when higher dimensions are involved.

0 投票
1 回答
598 浏览

python - 在python中加载matlab稀疏矩阵(matlab v 7.3)

我有一个存储需要在我的 python 程序中使用的大型 matlab 稀疏矩阵(matlab 7.3)的数据文件。我使用 h5py 加载这个稀疏矩阵,发现有 3 个数据结构与稀疏矩阵相关联。

假设稀疏矩阵的名字是M,3个数据结构是M['data'], M['ir'], M['jc']。最初我认为 M['ir'] 和 M['jc'] 存储非零项的行索引和列索引,但我刚刚发现 M['jc'] 中存在一些大于行数的值稀疏矩阵。谁能解释一下 3 数据结构中存储了哪些类型的信息?

0 投票
6 回答
23539 浏览

python - 如何通过 h5py 读取 v7.3 mat 文件?

我有一个由 matlab 创建并存储在 v7.3 格式 mat 文件中的结构数组:

现在我想通过 python 使用 h5py 读取这个文件:

我不知道如何从以下位置一一获取结构数据struArray

0 投票
1 回答
1244 浏览

python - numpy,h5py:如何使数组按其中一列从用 h5py 保存的较大列中排序?

我想给你一些背景信息,以便你更好地理解我的问题。

根据实验结果,我使用 h5py 填充了一个包含大量列的大 hdf5 表。完成所有测量后,我需要绘制并拟合一些结果。这已经在工作了,但是当我想绘制拟合函数时,因为我的数据没有按具有“x”轴数据的列排序,而不是单行,我得到了一个丑陋的背-第四行(我会展示给你看,但我还没有足够的声誉)。

所以我的第一个想法是在绘图和拟合之前对数组进行排序。我尝试按照我在这里找到的几个指南进行操作,但是我加入的阵列的形状错误,那是我认为可能有更好的方法的时候。

所以我的问题是,从使用 h5py 保存在 hdf5 文件中的更大数组中获取数组按其中一列排序的最佳方法是什么?

这就是我目前的做法:

假设我已经从 hdf5 文件中提取了列(尽管也许这可以改进!),现在我正在弥补它们。

0 投票
2 回答
208 浏览

python - 三维数据集

我正在将数据写入一个 3D 数据集,我注意到一个非常令人不安的问题。我想将 20 个 2000x2000 的矩阵写入数据集中。我注意到写入 2000x2000x20 的数据集比写入 20x2000x2000 的数据集要慢得多。有谁知道为什么?

慢 - 时间:66.4123821259

快速-时间:3.72713208199

0 投票
1 回答
651 浏览

python - 如何从一维源填充 HDF5 中的 n 维数组?

我有一个具有多个维度(x、y、通道、z、时间步长)的数组。但是,原始数据作为 (x, y, 通道) 的单个堆栈存储在 TIFF 图像中,具有 z * 时间步长帧。

最后,Pillow 的 Image.getdata() 函数返回一个需要重新整形的一维数组对象。

如果数据集太大而无法放入内存,那么将其读入 HDF5 的最佳方法是什么?是否可以在将数组写入 HDF5 后对其进行整形,或者以一种自动填充数组的方式写入一维数据(即写入 x 变化最快,y 第二快等)更新:类似于numpy.ndarray.flat将是理想的。

到目前为止,这是我尝试过的(img 是 PIL.Image,dset 是 h5py 数据集):

1)读取单个帧。这种方法太慢了,因为 1000 帧中的 300MB 需要大约 20 分钟。大部分时间都花在了 dset[] = 一个调用上。

2)不完整:分块阅读。这要快得多(同一数据集为 2 分钟),但我只对 4D 图像(sx、sy、通道、时间步长)进行了此操作,并且需要 z 切片的附加维度:

0 投票
2 回答
5327 浏览

python - Python中的大矩阵乘法 - 最好的选择是什么?

我有两个 c 的布尔稀疏方阵。从 12BM 的数据生成 80,000 x 80,000(当我使用 GB 的数据时,矩阵可能会大几个数量级)。

我想将它们相乘(这会产生一个三角矩阵 - 但是我没有得到这个,因为我不限制点积来产生一个三角矩阵)。

我想知道将它们相乘的最佳方法是什么(内存方面和速度方面) - 我将在具有 > 60GB RAM 的 m2.4xlarge AWS 实例上进行计算。出于速度原因,我更愿意将计算保留在 RAM 中。

我很欣赏 SciPy 有稀疏矩阵,h5py 也有,但两者都没有经验。

什么是最好的选择?

提前致谢

更新:布尔矩阵的稀疏性 <0.6%