【问题标题】:How to calculate Standard Deviation using loops on Python如何在 Python 上使用循环计算标准偏差
【发布时间】:2013-09-29 20:01:12
【问题描述】:

我必须使用循环计算列表的标准偏差。 这就是我所拥有的:

elif user_option == 2:
  stdev= 0
  average = 0
  for val in scores_list:
    diffsquared= (val - average)**2
    sum_diffsquared= diffsquared + val
    stdev= ((sum_diffsquared)/num_scores)**(1/2)
    print(stdev)

我一直打错号码。

【问题讨论】:

    标签: for-loop standards python-3.3 standard-deviation


    【解决方案1】:

    您的代码中有几个问题。首先,“sum_diffsquared”是在循环之外计算的。其次,您将平均值声明为 0。您需要先计算平均值。

    import numpy
    import scipy
    
    stddev = 0
    average = 0
    scores = [0,1,2,3,4]
    average = numpy.mean(scores) #or calculate it yourself
    diffsquared = 0
    sum_diffsquared = 0
    for val in scores:
      diffsquared = (val-average)**2
      sum_diffsquared = diffsquared + sum_diffsquared
    stddev = ((sum_diffsquared)/len(scores))**(1/2) # corrected
    print(stddev)
    print(numpy.sqrt(numpy.var(scores)))
    

    输出是:

    1.41421356237
    1.41421356237
    

    显示现在计算是正确的。

    【讨论】:

    • 我所做的是在 elif 语句之前计算了 elif 语句中的平均值。但由于某种原因,它说“平均”没有定义
    • 你必须在相应的'if'语句之前计算平均值。您应该熟悉变量作用域的概念 (en.wikipedia.org/wiki/Scope_(computer_science))。简而言之,对于那个 'elif' 范围,您的变量“平均”是未定义的。如果您在 'if/elif' 语句之前声明“平均”,则该变量仍将在所有 'if/elif' 范围内可见。
    猜你喜欢
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    相关资源
    最近更新 更多