You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用h5py在Python加载MATLAB数据时维度反转问题及解决

MATLAB文件在Python中加载后维度反转的原因与解决办法

问题场景

用以下Python代码加载MATLAB文件:

import h5py
import numpy as np
filepath = 'file.mat'
arrays = {}
f = h5py.File(filepath)
for k, v in f.items():
    arrays[k] = np.array(v)

a = arrays['data']
print(a.shape)

MATLAB中该数据的尺寸为:

>> size(dataset)

ans =

    64    50    21     2

但Python中输出的尺寸为:

>>> a.shape
(2, 21, 50, 64)

维度反转的原因

MATLAB采用**列优先(Fortran顺序)存储数组,而NumPy默认使用行优先(C顺序)**存储。h5py读取MATLAB的HDF5文件时,会直接按照原始存储的维度顺序加载,导致Python中看到的维度和MATLAB里的完全反转。

解决办法

有两种简单的处理方式:

  • 直接转置数组
    利用NumPy的转置操作T,直接反转维度顺序:
    a = arrays['data'].T
    print(a.shape)  # 输出 (64, 50, 21, 2),和MATLAB一致
    
  • 读取时指定转置
    在读取数组的同时完成转置,避免后续额外操作:
    for k, v in f.items():
        arrays[k] = np.array(v).transpose()
    
    这样arrays['data'].shape会直接和MATLAB中的尺寸匹配。

内容的提问来源于stack exchange,提问作者Demiurg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:05:59