快速计算在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)
    
已邀请:
您进行了体面的尝试,但应确保您了解这一点,并且不要明确复制,因为这是硬件
import numpy as np
N = int(1e6)
a = np.random.uniform(-5,5,size=(N,))
standard_deviation = np.std(a)
假设您可以使用numpy之类的软件包(已将其标记为此类)。如果可以的话,有很多方法可以让您在数据数组上创建和执行操作,从而避免显式循环(这是在后台高效完成的)。最好看一下文档,以了解可用的功能以及如何使用它们: http://docs.scipy.org/doc/numpy/reference/index.html     
使用此Wiki页面上的Variance公式,您可以在一个循环中对其进行计算,而无需存储随机数列表(假设您在其他地方不需要它们)。     

要回复问题请先登录注册