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

如何读取Matlab .mat文件指定矩阵部分数据转为pandas DataFrame

Python读取.mat文件指定矩阵部分数据的实现方案

scipy默认的loadmat不加参数时会加载文件内所有变量,按需读取只需要加对应参数或者换适配高版本mat格式的库即可,分两种场景实现:

  • 针对Matlab v5/v6版本生成的.mat格式
    直接给loadmat传入variable_names参数指定只加载目标变量F,其他无关变量完全不会读入内存,读取后按你需要的索引切片,再转DataFrame即可对接现有代码:

    from scipy.io import loadmat
    import pandas as pd
    
    # 仅加载目标变量F,过滤所有其他无关变量
    mat_content = loadmat("你的mat文件本地路径.mat", variable_names=["F"])
    F = mat_content["F"]
    
    # 按你需要的索引取子集,例:取第10-200行、第0-30列,替换成你实际需要的索引范围即可
    partial_F = F[10:200, 0:30]
    
    # 转成pandas DataFrame对接现有代码
    target_df = pd.DataFrame(partial_F)
    
  • 针对Matlab v7.3及以上版本生成的.mat格式
    高版本mat文件本质是HDF5封装格式,scipy不支持部分读取,用h5py可以实现连完整F矩阵都不加载,直接读取指定索引对应的片数据,内存占用最低:

    import h5py
    import pandas as pd
    
    with h5py.File("你的mat文件本地路径.mat", "r") as f:
        # 注意:h5py读取Matlab矩阵时维度顺序和Matlab原生顺序相反,按需加.T转置即可
        # 直接传入你需要的索引范围,仅读取对应块的数据进内存
        partial_F = f["F"][10:200, 0:30].T
    
    # 转成pandas DataFrame对接现有代码
    target_df = pd.DataFrame(partial_F)
    

版本判断小技巧:直接先用第一种scipy的方法跑,如果抛出NotImplementedError: Please use HDF reader for matlab v7.3 files报错,就换第二种h5py方案即可,不用提前手动查文件版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:18:22