You need to enable JavaScript to run this app. 使用Numpy genfromtxt()读取txt数据时如何跳过无效行
优惠活动
大模型
产品
解决方案
定价
更多

使用Numpy genfromtxt()读取txt数据时如何跳过无效行

Numpy genfromtxt跳过无效格式行实现方案

方案1:调整现有genfromtxt参数即可实现

你当前代码已经配置了invalid_raise=False参数,本身就具备跳过解析失败行的能力,只需要补充两个参数优化适配你的场景:

  • 增加usecols=range(13):你的正常行总共有13列(1个时间戳列+12个浮点数值列),强制指定读取列数后,列数不匹配的行将会被直接过滤
  • 动态生成浮点列的dtype规则,避免手动写12个f8出现数量错误

修改后代码:

values = np.genfromtxt(
    fi,
    dtype="S32," + ",".join(["f8"]*12),
    delimiter="\t",
    missing_values='',
    invalid_raise=False,
    filling_values=0,
    usecols=range(13)
)

方案2:自定义行过滤逻辑(适合复杂无效行场景)

如果你的无效行存在列数刚好匹配但内容不符合的特殊情况,可以先对文件行做自定义校验再传入genfromtxt,使用生成器实现不会额外占用内存,适合处理大数据量文件:

def filter_valid_lines(file_obj):
    for line in file_obj:
        # 可优先加关键词过滤,直接跳过含无效标识的行:if 'DUT stopped' in line: continue
        split_line = line.strip().split("\t")
        if len(split_line) != 13:
            continue
        try:
            [float(col) for col in split_line[1:]]
            yield line
        except ValueError:
            continue

# 重置文件指针后传入过滤后的行
fi.seek(0)
values = np.genfromtxt(
    filter_valid_lines(fi),
    dtype="S32," + ",".join(["f8"]*12),
    delimiter="\t",
    missing_values='',
    filling_values=0
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 02:03:02