【发布时间】:2023-03-10 01:41:01
【问题描述】:
我试图在不使用numpy 或除math 之外的任何外部库的情况下计算python 中的标准偏差。我想在编写算法方面做得更好,并且在提高我的 Python 技能时,我只是将其作为一些“家庭作业”。我的目标是将this formula 翻译成python,但没有得到正确的结果。
我正在使用speeds = [86,87,88,86,87,85,86] 的一系列速度
当我跑步时:
std_dev = numpy.std(speeds)
print(std_dev)
我得到:0.903507902905。但我不想依赖 numpy。所以...
我的实现如下:
import math
speeds = [86,87,88,86,87,85,86]
def get_mean(array):
sum = 0
for i in array:
sum = sum + i
mean = sum/len(array)
return mean
def get_std_dev(array):
# get mu
mean = get_mean(array)
# (x[i] - mu)**2
for i in array:
array = (i - mean) ** 2
return array
sum_sqr_diff = 0
# get sigma
for i in array:
sum_sqr_diff = sum_sqr_diff + i
return sum_sqr_diff
# get mean of squared differences
variance = 1/len(array)
mean_sqr_diff = (variance * sum_sqr_diff)
std_dev = math.sqrt(mean_sqr_diff)
return std_dev
std_dev = get_std_dev(speeds)
print(std_dev)
现在当我跑步时:
std_dev = get_std_dev(speeds)
print(std_dev)
我得到:[0] 但我期待 0.903507902905
我在这里错过了什么?
【问题讨论】:
-
math不是外部库。 -
您的意见是什么?我们如何重现这个答案?
-
您正在定义速度并使用narrow_speed 调用它。这不会给你一个错误吗?
-
@ZainUlAbidin 所有代码都在问题正文中可用,但并非都在同一个块中。我已经编辑了展示我的实现的部分,以包含重现所需的所有内容。
-
您的代码未返回
[0]!
标签: python algorithm statistics mean standard-deviation