将方程转换为python

时间:2015-01-16 07:04:26

标签: python

enter image description here

我试图在python中计算这个等式,但是我对循环有了解,我对求和的总和感到困惑。

这是我得到了多远,我无法实现总和的总和。任何的想法?

import numpy as np
stdev =np.zeros(N)
m_sum=np.zeros([lam,N])

for i in xrange(N):
    for k in xrange(lam):
        m_sum[k,i]+=(1/(lam))*m[k,i]
    stdev[i]=1/(lam-1)*(m[k,i]-m_sum[k,i])**2        

1 个答案:

答案 0 :(得分:2)

令人困惑,因为内部和外部循环都使用相同的索引变量k,因此它不明确。但是,由于这是标准偏差的标准公式,我们从背景知道目的是什么:

import math
import numpy as np
stdev = np.zeros(N)
means = np.zeros(N)

for i in xrange(N):
    m = 0
    for k in xrange(lam):
        m += m[k,i]
    means[i] = m/lam

    v = 0
    for k in xrange(lam):
        v += (m[k,i] - means[i])**2
    stdev[i] = math.sqrt(v)/(lam-1)

请注意,numpy还具有直接计算矩阵m列的标准差的函数,但如果您只是将数学方程直接转换为代码,那么你就是这样做的。