【问题标题】:how to calculate variance and std without import如何在不导入的情况下计算方差和标准
【发布时间】:2016-12-02 11:03:32
【问题描述】:

我必须在 python 中计算均值、方差和标准差。

这是我的代码:

def mean(first_data_values):

    return sum(first_data_values) / len(first_data_values)

def variance(values):

    meanval = mean(values)
    return sum((values[i]-meanval) ** 2 for i in values)/len(values)

def std(values):

    return (variance(values)) ** (1/2)

所以我得到了错误的结果。知道有什么问题吗??

【问题讨论】:

  • 有什么特殊原因不能使用statistics 模块吗?
  • 应该是sum((i - meanval) ** 2 for i in values)/len(values)
  • 这个作业是不允许的
  • 我会在variance()std() 的签名中添加一个可选参数mean。如果您事先计算了平均值,它可以让您节省时间。官方的python模块就是这样做的。

标签: python python-3.x variance


【解决方案1】:

错误在于以下行:

return sum((values[i]-meanval) ** 2 for i in values)/len(values)

i 一个一个地取values 中每个元素的值。然后您将它用作values[i] 中的索引,但它应该只是i

因此:

return sum((i-meanval) ** 2 for i in values)/len(values)

return mean([(i-meanval) ** 2 for i in values])

【讨论】:

  • 或者只是return mean([(i-meanval) ** 2 for i in values])
  • 是的,更好!
猜你喜欢
  • 2013-02-04
  • 2023-03-10
  • 1970-01-01
  • 2020-01-28
  • 2019-01-27
  • 2021-06-12
  • 2017-11-22
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多