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

如何按lognorm或exp_E参数对每12行为一组的多项式数据进行排序

实现方案

你可以按以下逻辑完成分组排序,Python实现的话处理50万行数据效率完全满足要求:

核心步骤

  • 先把整个数据集按空行切分,每一块内容对应一个12行的分组,比按固定12行计数的容错性更高,避免部分行异常导致分组错位
  • 对每个分组提取最后一行的目标参数(lognorm/exp_E),用正则匹配就能快速拿到对应浮点值
  • 多项式检索场景下通常参数值越小多项式质量越高,所以按提取的数值做升序排序即可,需要逆序的话调整排序规则就行
  • 排序完成后按原始格式拼接所有分组输出,保留原数据的所有字段

示例代码

import re

# 可自定义排序依据:选"lognorm" 或 "exp_E"
SORT_KEY = "lognorm"

def extract_sort_value(group_content: str) -> float:
    # 匹配最后一行的目标参数值
    match = re.search(rf"{SORT_KEY} (\d+\.?\d*)", group_content)
    if not match:
        # 异常分组可以放最后或者过滤,这里默认给极大值放末尾
        return float("inf")
    return float(match.group(1))

if __name__ == "__main__":
    # 读取原始数据
    with open("你的数据集路径.txt", "r", encoding="utf-8") as f:
        content = f.read()
    # 按空行拆分成分组,过滤掉空块
    groups = [g.strip() for g in content.split("\n\n") if g.strip()]
    # 按指定参数升序排序
    groups_sorted = sorted(groups, key=extract_sort_value)
    # 输出排序后的结果
    with open("排序后结果.txt", "w", encoding="utf-8") as f:
        f.write("\n\n".join(groups_sorted))

注意事项

  • 如果你的数据集严格遵循每12行一个分组的规则,也可以直接按行号批量截取分组:[content_lines[i:i+12] for i in range(0, len(content_lines), 12)],和空行拆分的效果一致
  • 排序前可以先做参数校验,把匹配不到数值的异常分组单独拎出来处理,避免影响整体排序结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:48:06