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

如何在Python中读取NYUv2数据集mat文件的类别名称为字符串

解决NYUv2数据集names对象引用转可读字符串问题

NYUv2的nyu_depth_v2_labeled.mat文件中,names变量存储的是HDF5对象引用数组,每个引用指向一个单独的字符串数据集,所以直接读取names只能拿到引用而非实际名称。要转换成Python可读字符串,需要遍历这些引用并解析对应的数据集。

修正后的代码

import numpy as np
import h5py

mat_path = '/path/to/nyu_depth_v2_labeled.mat'
mat_file = h5py.File(mat_path, 'r')

# 获取names的对象引用数组,展开为一维
names_refs = mat_file['names'][0]

# 遍历引用,解析成字符串列表
category_names = []
for ref in names_refs:
    # 把引用对应的ASCII整数数组转成字符串
    name_str = ''.join(chr(c) for c in mat_file[ref][:])
    category_names.append(name_str)

# 验证结果
print(f"共获取到 {len(category_names)} 个类别名称")
print("前5个类别名称:", category_names[:5])

关键说明

  • 原names的shape是(1, 894),通过[0]提取出一维数组,方便遍历每个引用。
  • 每个引用指向的数据集是ASCII码组成的整数数组,需要逐个转成字符后拼接成完整类别名称。
  • 最终category_names就是包含894个类别名称的Python字符串列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:28:10