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

Python代码执行append后data_list为空,np.concatenate报维度错误如何解决

S3DIS数据集处理代码空列表报错修复方案

核心问题定位

你遇到的报错有两个触发原因:

  1. data_list为空,np.concatenate误将空列表和整数0识别为两个待拼接的对象,触发维度不匹配
  2. 代码本身np.concatenate的传参写法存在语法错误

具体修复步骤

  • 第一步:修复路径匹配问题,排查空列表根源
    路径中混用正反斜杠会导致glob在Windows系统下匹配失败,先统一路径格式并添加匹配校验:
def convert_pc2ply(anno_path, save_path):
    """
    Convert original dataset files to ply file (each line is XYZRGBL).
    We aggregated all the points from each instance in the room.
    :param anno_path: path to annotations. e.g. Area_1/office_2/Annotations/
    :param save_path: path to save original point clouds (each line is XYZRGBL)
    :return: None
    """
    data_list = []
    # 新增:统一路径为系统兼容格式,打印匹配结果
    anno_path = os.path.abspath(anno_path)
    txt_files = glob.glob(os.path.join(anno_path, '*.txt'))
    print(f"路径{anno_path}下匹配到txt文件数:{len(txt_files)}")
    
    for f in txt_files:
        class_name = os.path.basename(f).split('_')[0]
        if class_name not in gt_class:  # note: in some room there is 'staris' class..
            class_name = 'clutter'
        pc = pd.read_csv(f, header=None, delim_whitespace=True).values
        labels = np.ones((pc.shape[0], 1)) * gt_class2label[class_name]
        data_list.append(np.concatenate([pc, labels], 1))  # Nx7

如果打印的匹配数为0,检查数据集是否完整解压、Annotations目录下是否存在txt文件、传入的anno_path参数是否拼写错误。

  • 第二步:修复np.concatenate语法错误,添加空列表校验
    原代码将拼接轴参数0放到了待拼接对象的元组中,属于语法错误,同时增加空列表判断避免异常:
print(data_list)
    # 新增:空列表校验
    if not data_list:
        print(f"警告:{anno_path}下无有效标注数据,跳过保存")
        return
    # 修复concatenate传参错误:axis=0为第二个参数,不放入待拼接元组
    pc_label = np.concatenate(data_list, axis=0)
    
    # 后续代码无需修改
    xyz_min = np.amin(pc_label, axis=0)[0:3]
    pc_label[:, 0:3] -= xyz_min

    xyz = pc_label[:, :3].astype(np.float32)
    colors = pc_label[:, 3:6].astype(np.uint8)
    labels = pc_label[:, 6].astype(np.uint8)
    write_ply(save_path, (xyz, colors, labels), ['x', 'y', 'z', 'red', 'green', 'blue', 'class'])
  • 可选校验:如果匹配到文件后data_list还是为空,检查全局变量gt_class、gt_class2label是否正确定义,确认gt_class2label中存在clutter的映射关系,避免类别映射报错导致无数据写入列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:57:02