【问题标题】:How calculate percentage error by comparing two lists for each list's element using Python如何通过使用 Python 比较每个列表元素的两个列表来计算百分比误差
【发布时间】:2018-01-30 18:51:03
【问题描述】:

我有两个列表,例如:

a = [12, 0.2112, 0.2335, 4, 523, -0.55556, 0.212] # accepted value
b = [10, -0.0222, 0.5534, 4, 522, -0.99922, 0.877] # experimental value

我想使用这个公式 - |accepted value(a[i]) - experimental value(b[i])| \ accepted value(a[i]) x 100%, 得到这个结果:

c = [16.66, 110.51, 137.00, 0.00, 0.191, 78.59, 313.67]

如何在不使用 numpy 的情况下对这两个列表执行此操作?

【问题讨论】:

  • zip 函数你可能会搞砸
  • 如果你的意思是你想同时迭代ab你可以使用zip函数
  • 顺便说一句,为什么c 中的第四个元素是100?不应该是0吗? (没有检查其余的)
  • 欢迎来到 SO。不幸的是,这不是一个讨论论坛或教程。请花时间阅读How to Ask 和该页面上的其他链接。花一些时间与the Tutorial 练习示例。它会让你了解 Python 提供的工具来帮助你解决问题。

标签: python list compare percentage


【解决方案1】:

这可以通过一个普通的循环来完成

c = [abs(i-j)/i*100 for i,j in zip(a,b)]
print(c)

如果您在 a 中有零,那么您可以通过包含 if-else 语句来跳过这些(同时保持相同的长度):

c = [abs(i-j)/i*100 if i != 0 else None for i,j in zip(a,b)]
print(c)

【讨论】:

  • 非常感谢!是列表理解吗?我需要了解更多... :)
  • @IluxaKuk 确实是列表理解。
  • 如果我在这样的数据中有零:a = [0,1,2,3,0,5], b= [2,5,8,0,4,7] ,我知道如何跳过它: c = abs(i-j)/i*100 for i,j in zip(a,b) if i !=0] 但我得到这样的列表 [400.0, 300.0, 100.0, 40.0],并且不能在输出列表中保存相同数量的元素,可以这样做吗?例如:[无,400.0,300.0,100.0,无,40.0]
  • @IluxaKuk 我已经编辑了我的答案,所以它包含了你要问的内容。
  • 太棒了!有趣的是,当我对浮点类型使用 运算符时,我有:“ ZeroDivisionError:浮点除以零”。但是当我使用 != 时,一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 2020-10-10
  • 2022-11-23
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多