在 Matlab 中转置的 Python 创建的 HDF5 数据集

标签 python matlab numpy hdf5 h5py

我有一些在 Python 和 Matlab 之间共享的数据。我过去是通过将 NumPy 数组保存在 MATLAB 样式的 .mat 文件中来实现的,但我想切换到 HDF5 数据集。但是,我注意到一个有趣的特征:当我将 NumPy 数组保存在 HDF5 文件中(使用 h5py )然后在 Matlab 中读取它(使用 h5read )时,它最终被转置。有什么我想念的吗?

Python代码:

import numpy as np
import h5py

mystuff = np.random.rand(10,30)

f = h5py.File('/home/user/test.h5', 'w')
f['mydataset'] = mystuff
f.close()

Matlab代码:

mystuff = h5read('/home/user/test.h5', '/mydataset');
size(mystuff) % 30 by 10

最佳答案

这是 Matlab 的 HDF5 读取器例程中的一个怪癖。 (我认为这种行为背后的原因是:数据在二进制文件中按 C 顺序排列,而 Matlab 数组按 Fortran 顺序排列,因此它们应该将数据报告为转置而不是重新排序。)

如果您使用 HDF5 工具检查由 Python 创建的文件,尺寸应该是:

$ h5ls test.h5 
mydataset                Dataset {10, 30}

关于在 Matlab 中转置的 Python 创建的 HDF5 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21624653/

相关文章:

python - 隐藏工作表或有效隐藏 excel 选项卡的 Pandas to_excel?

python - 当下一个元素是文本时 xpath 中的异常

python - 从 feedparser 媒体检索 url :content

matlab - 将虚线/点线图打印为 TIFF

python - 从原子力显微镜测量计算粒度分布

python - 用 matplotlib 显示文本

python - 1 周内修改的文件名列表

matlab - 在 MATLAB 中对矩阵进行排序时如何维护行?

python - 强制 genfromtxt 输出为无向量

python - 插入数据并找到峰值的最准确方法?