我试图在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
答案 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
列的标准差的函数,但如果您只是将数学方程直接转换为代码,那么你就是这样做的。