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

如何提取传感器日志最后列浮点值并按首列传感器名称分组统计?

传感器数据分组及处理实现

核心步骤1-2实现(提取读数+按传感器分组)

你不需要用复杂的库处理格式,直接逐行解析文本、用字典做分组容器即可,代码如下:

from collections import defaultdict
import numpy as np

# 初始化分组容器:键为传感器名称,值为对应读数的列表
sensor_readings = defaultdict(list)

# 读取文本文件,替换为你的实际文件路径
with open("sensor_log.txt", "r", encoding="utf-8") as f:
    for line in f:
        # 去除首尾空白后按「 - 」拆分字段
        line = line.strip()
        if not line:
            continue
        sensor_name, _, reading_str = line.split(" - ")
        # 转换为浮点型存入对应分组
        sensor_readings[sensor_name].append(float(reading_str))

运行完以上代码后,sensor_readings就已经完成了读数提取和分组,你可以直接遍历每个传感器的读数列表做后续计算。

完整流程代码(含步骤3-5)

以下是覆盖全需求的完整示例,你可以根据实际业务调整校验阈值和判断逻辑:

# 自定义校验阈值:格式为 {传感器名称: (最大允许标准差, 最小合法均值, 最大合法均值)}
check_rules = {
    "Thermometer1": (3, 60, 80),
    "Thermometer2": (3, 65, 75),
    "Hygrometer1": (0.5, 40, 50),
    "Hygrometer2": (0.5, 40, 50)
}

for sensor, data in sensor_readings.items():
    data_arr = np.array(data)
    mean = data_arr.mean()
    std = data_arr.std()
    # 执行校验
    max_std, min_mean, max_mean = check_rules[sensor]
    if std > max_std or not (min_mean <= mean <= max_mean):
        print(f"{sensor.lower()} is not precise enough")
    else:
        print(f"{sensor.lower()} is qualified")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:30:02