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

如何按Image公共名称匹配对应索引OutputScore计算平均值

实现方案

核心处理逻辑

  • 对齐Image和OutputScore的索引,逐对遍历图片路径和对应分数
  • 从每个图片路径中提取公共名称:拆分路径拿到文件名后,提取文件名开头、数字串之前的字符串,就是Chin、Nose这类公共标识名
  • 按公共名称对分数分组,仅保留出现次数≥2的公共名称分组
  • 对每个保留的分组计算分数平均值

可运行代码(Python)

import re
from collections import defaultdict

# 原始输入数据
raw_data = {
    "Image": [
        "22301657205688/Chin2231657205705u3zK.jpeg",
        "22301657205688/Chin2231657205707k6HN.jpeg",
        "22301657205688/Chin2231657205708Ip57.jpeg",
        "22301657205688/Forehead2231657205693CbX9.jpeg",
        "22301657205688/L Cheek2231657205697g8d4.jpeg",
        "22301657205688/Nose22316572057008AGT.jpeg",
        "22301657205688/Nose2231657205702k9OU.jpeg"
    ],
    "OutputScore": [3,9,9,3,1,3,9],
    "TotalScore": 5.285714285714286
}

# 按公共名称归集对应分数
score_groups = defaultdict(list)
for img_path, score in zip(raw_data["Image"], raw_data["OutputScore"]):
    file_name = img_path.split("/")[-1]
    # 匹配文件名开头所有非数字字符,即为公共名称
    common_name = re.match(r'^(\D+)', file_name).group(1)
    score_groups[common_name].append(score)

# 计算重复出现公共名称的平均分
avg_result = {}
for name, scores in score_groups.items():
    if len(scores) >= 2:
        avg_result[name] = sum(scores) / len(scores)

print(avg_result)

运行结果

代码执行后输出结果为:

{'Chin': 7.0, 'Nose': 6.0}

逻辑校验:Chin对应索引0、1、2的三个分数3、9、9,平均值为7;Nose对应索引5、6的两个分数3、9,平均值为6,完全匹配需求计算规则。如果需要调整小数保留位数,给计算结果套round(数值, 保留位数)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:06:33