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

如何用Python高效计算实验列表与多个模拟列表的RMSE?

多模拟列表与实验数据的RMSE批量计算实现

原代码的问题

你的代码无法运行主要有以下几个问题:

  • 未初始化MSE、RMSE容器就直接用索引赋值,且变量i此时完全未定义
  • 循环逻辑错误:遍历sim_list时,i是模拟列表本身,不是索引,却错误地用它作为RMSE的索引,还把RMSE[i]当作函数调用
  • Python3语法错误:print语句需要加括号

修正后的实现方案

推荐用函数封装RMSE计算逻辑,既避免重复代码,也让逻辑更清晰:

import numpy as np

def calculate_rmse(experimental, simulated):
    exp_array = np.array(experimental)
    sim_array = np.array(simulated)
    mse = np.square(exp_array - sim_array).mean()
    return np.sqrt(mse)

# 定义实验数据和所有模拟列表
experimental = [1, 2, 3, 4, 5]
sim_list = [
    [1.6, 2.5, 2.9, 3, 4.1],
    [5, 4, 3, 2, 1]
]

# 批量计算并输出每个模拟列表的RMSE
for idx, simulated in enumerate(sim_list, start=1):
    rmse = calculate_rmse(experimental, simulated)
    print(f"Root Mean Square Error {idx}:\n{rmse}\n")

如果不想封装函数,也可以直接在循环内完成计算:

import numpy as np

experimental = [1, 2, 3, 4, 5]
sim_list = [
    [1.6, 2.5, 2.9, 3, 4.1],
    [5, 4, 3, 2, 1]
]

exp_array = np.array(experimental)
for idx, simulated in enumerate(sim_list, start=1):
    sim_array = np.array(simulated)
    mse = np.square(exp_array - sim_array).mean()
    rmse = np.sqrt(mse)
    print(f"Root Mean Square Error {idx}:\n{rmse}\n")

优化说明

  • 用numpy数组替代原生列表计算,效率更高且代码更简洁
  • 使用enumerate给每个模拟列表自动编号,输出结果更易区分
  • 用np.sqrt替代math.sqrt,无需额外导入math模块,且更适配numpy计算结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:24:23