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

将含多数组的MATLAB .mat文件转换为NumPy数组的问题

解决.mat文件嵌套数组转NumPy数组的方案

1. 先确认嵌套结构的类型

scipy.io.loadmat加载Matlab的struct后,会返回(1,1)形状的NumPy结构化数组,你可以先打印结构信息确认:

# 查看fanmap的类型和形状
print(type(mat['fanmap']))
print(mat['fanmap'].shape)
# 查看内部第一个元素的结构
print(mat['fanmap'][0,0])

2. 提取fanmap中的所有数组

直接遍历结构化数组的字段,提取每个字段对应的NumPy数组:

# 取出fanmap的结构体内容
fanmap_struct = mat['fanmap'][0,0]
# 获取所有字段名称
fanmap_fields = fanmap_struct.dtype.names

# 提取所有数组到列表
fanmap_arrays = []
for field in fanmap_fields:
    arr = fanmap_struct[field]
    fanmap_arrays.append(arr)
    # 可选:打印每个数组的形状验证
    print(f"字段 {field} 的形状: {arr.shape}")

3. 提取fanmap1D中的所有数组

用同样的逻辑处理fanmap1D:

fanmap1D_struct = mat['fanmap1D'][0,0]
fanmap1D_fields = fanmap1D_struct.dtype.names

fanmap1D_arrays = []
for field in fanmap1D_fields:
    arr = fanmap1D_struct[field]
    fanmap1D_arrays.append(arr)
    print(f"字段 {field} 的形状: {arr.shape}")

4. 可选:用字典存储数组(方便后续调用)

如果需要按字段名快速调用数组,可以把提取结果存到字典里:

fanmap_dict = {field: fanmap_struct[field] for field in fanmap_fields}
fanmap1D_dict = {field: fanmap1D_struct[field] for field in fanmap1D_fields}

# 示例:调用fanmap里的某个数组
# print(fanmap_dict['你的字段名'])

关键说明

从Matlab struct提取出的arr本身就是NumPy数组,不需要额外转换——scipy.io.loadmat已经帮你完成了类型转换,你只需要把嵌套结构里的数组逐一提取出来即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:52:07