执行此操作的最佳(最快)方法是什么?用于快速计算Numpy中大数集标准偏差的方法
这会产生什么,我相信这是正确的答案,但显然在N = 10E6是痛苦的缓慢。我认为我需要保持Xi值,以便我可以正确计算标准偏差,但是有没有什么技术可以让这个运行更快?
def randomInterval(a,b):
r = ((b-a)*float(random.random(1)) + a)
return r
N = 10e6
Sum = 0
x = []
for sample in range(0,int(N)):
n = randomInterval(-5.,5.)
while n == 5.0:
n = randomInterval(-5.,5.) # since X is [-5,5)
Sum += n
x = np.append(x, n)
A = Sum/N
for sample in range(0,int(N)):
summation = (x[sample] - A)**2.0
standard_deviation = np.sqrt((1./N)*summation)
10e6!= 10 ** 6。基于这个问题,我认为你的意思是第五行的1e6。 – job 2011-04-12 19:29:16
@job,你可以得到我的投票来获得当天的最佳优化。这应该会提供10倍的加速。 – 2011-04-12 19:35:58
请注意,每次通过循环而不是递增时,您的'summation'变量将被覆盖。同样在Python 2.X中,你应该使用'xrange'而不是'range',所以当一个生成器更高效时,你不会创建一个非常大的列表来充当计数器。 – JoshAdel 2011-04-12 19:37:12