我需要帮助在不使用 importmath、python 的情况下获取 stdev

Posted

技术标签:

【中文标题】我需要帮助在不使用 importmath、python 的情况下获取 stdev【英文标题】:i need help getting stDev without using importmath, python 【发布时间】:2019-04-26 08:54:14 【问题描述】:
### import math

def mean(values):
    return sum(values)*1.0/len(values)

    def std():
        pass
    print(std())

    def std(values):
            length = len(values)
        if length < 2:
            return("Standard deviation requires at least two data points")
        m = mean(values)
        total_sum = 0
        for i in range(length):
            total_sum += (values[i]-m)**2
        under_root = total_sum*1.0/length
        return math.sqrt(under_root) 

    vals = [5]
    stan_dev = std(vals)
    print(stan_dev)

    values = [1, 2, 3, 4, 5]
    stan_dev = std(values)

    print(stan_dev)

__________________________________________________________________________


lst = [3, 19, 21, 1435, 653342]

sum = reduce((lambda x, y: x +y), lst)
print (sum) 

# list = [3, 19, 21, 1435, 653342]

我需要能够在不使用 sum 或 len 的情况下获得 stDev 我需要“解压”stDev ???

【问题讨论】:

您能否添加更多详细信息,说明您想要实现的目标、所需的输出等以及更正问题中的代码格式? 要计算标准偏差,您需要提取平方根。在 Python 中,sqrt 函数位于 math 模块中。如果您坚持这样做而不导入math,那么您将不得不编写自己的平方根函数。当您真正想要的只是标准偏差时,这有点高。 您可以获得 1/2 次方的平方根(因此无需数学导入)。 我可以使用数学中的平方根,只需要得到 sum 和 Length,而不使用 Len 来得到平均值,然后得到 st dev 【参考方案1】:

你可以用两个循环来做(有更短的方法,但这很简单):

arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# Calculate the mean first
N, X = 0, 0
for xi in arr:
    N += 1
    X += xi
mean = X/N

# Calculate the standard deviation
DSS = 0
for xi in arr:
    DSS += (xi - mean)**2
std = (DSS/N)**(1/2)

mean 输出4.5,为std 输出2.872

【讨论】:

对于 [1,2,3,4,5] 的列表,当我将这些数字代入这个公式时,std 应该是 1.58,我得到 0.89,平均值正好在 3 数组 [1,2,3,4,5] 的标准偏差是 1.4142(我用 numpy 检查过),这就是上面的代码正确输出的结果。这可能取决于您所需的标准偏差公式(除以 N-1 而不是 N),在这种情况下,标准公式应为 std = (DSS/(N-1))**(1/2)。 Here is a sandbox with the code running - proving it gives the correct answer.

以上是关于我需要帮助在不使用 importmath、python 的情况下获取 stdev的主要内容,如果未能解决你的问题,请参考以下文章

在不同行上打印多个时间

在不需要 URL 参数的情况下将 props 传递给路由

python中ln(π +1)怎么表示

我想要一个c程序来查找我使用数组编写的最大和最小数字有人可以帮助我如何在不使用数组的情况下制作[关闭]

没有数学模块的Python 3中的天花板和地板等效?

如何使用Android中的Camera2 API在不预览的情况下拍摄多张照片?