我有一些数据在Python和Matlab之间共享。我以前是通过在MATLAB样式的.mat文件中保存NumPy数组来实现的,但是我想切换到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代码:
^{pr2}$
这是Matlab的HDF5读取器例程中的一个怪癖。(我认为这种行为背后的原因是:二进制文件中的数据是C顺序的,而Matlab数组是Fortran顺序的,所以它们应该将数据报告为转置,而不是重新排序。)
如果使用HDF5工具检查Python创建的文件,则尺寸应为:
当从MatLab读取数据时,需要对读取的数据的维数进行排列以检索数据布局。为此,使用permute函数。下面的代码给出了任意维数的一般情况
当处理二维数据时,只能转置来自h5read的结果
^{pr2}$请参阅包含以下语句的Matlab HDF5 documentation:
即使在今天,在Mathworks将其代码翻译成C(等)很久之后,该产品的Fortran起源时不时地露出水面。在
相关问题 更多 >
编程相关推荐