为了账号安全,请及时绑定邮箱和手机立即绑定

返回包含算术平均值和无偏样本方差的元组

返回包含算术平均值和无偏样本方差的元组

红糖糍粑 2023-08-15 17:28:44
我必须编写一个函数,它接受长度≥2 的数字列表,并返回一个包含这些数字的算术平均值和无偏样本方差的元组。即给定一个项目列表 [𝑥1,𝑥2,…,𝑥𝑁],返回一个元组 (𝑚,𝑠2),其中:我不允许使用内置函数,如求和、任何数学函数等。我不知道在不使用这些函数的情况下如何继续。我的代码:def mean_variance(numbers):     m = sum(numbers) / len(numbers)     var = sum((xi - m) ** 2 for xi in numbers) / len(numbers)         return m, var我正在测试的内容:assert(mean_variance([1, 2, 3]) == (2, 1))
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

我不知道为什么不允许您使用内置函数,但我想您可以在没有内置函数的情况下做到这一点,如下所示:


def mean_variance(numbers):

    meanSum = 0

    for num in numbers:

        meanSum += num

    mean = meanSum / len(numbers)


    varSum = 0

    for num in numbers:

        varSum += (num - mean) ** 2

    var = varSum / (len(numbers) - 1)


    return mean, var


查看完整回答
反对 回复 2023-08-15
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我用 替换了该sum函数reduce并更正了公式中的错误。这是代码:


from functools import reduce



def mean_variance(numbers):

    m = reduce(lambda x, y: x+y, numbers) / len(numbers)

    var = reduce(lambda x, y: x+y, ((xi - m) ** 2 for xi in numbers)) / (len(numbers)-1)

    return m, var


查看完整回答
反对 回复 2023-08-15
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

不使用任何内置方法


平均值和方差可以是浮点数。所以返回int或float将由自动处理assert


def mean_variance(inputList):

  sum = 0

  lenList = 0

  for val in inputList:

    sum = int(val) + sum

    lenList = lenList + 1

  mean = sum/lenList


  sum_sq = 0

  for val in inputList:

    sq = (int(val) - int(mean)) ** 2

    sum_sq = sum_sq + sq

  variance = sum_sq/(lenList-1)


  return (float(mean), float(variance))



print(mean_variance([1, 2, 3]))

assert mean_variance([1, 2, 3]) == (2, 1)


查看完整回答
反对 回复 2023-08-15
  • 3 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信