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

发布于 2021-01-29 14:58:17

我有一些在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
关注者
0
被浏览
108
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    如果检查使用HDF5工具由Python创建的文件,则尺寸应为以下尺寸:

    $ h5ls test.h5 
    mydataset数据集{10,30}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看