在Numpy中快速计算大量数据集的标准差的方法
有什么最快的方法来做到这一点呢?
这个方法生成的结果我觉得是正确的,但当N等于10000000的时候,速度实在是太慢了。我想我需要保留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)
2 个回答
1
根据这个维基页面上关于方差的公式,你可以在一个循环中计算方差,而不需要保存随机数的列表(前提是你在其他地方不需要这些随机数)。
3
你做得不错,但要确保自己理解这些内容,不要直接抄袭,因为这是作业。
import numpy as np
N = int(1e6)
a = np.random.uniform(-5,5,size=(N,))
standard_deviation = np.std(a)
这里假设你可以使用像numpy这样的库(你已经标记了它)。如果可以的话,有很多方法可以让你创建数据数组并对其进行操作,这样就不需要手动写循环(这些操作在后台以高效的方式完成)。建议你查看一下文档,了解有哪些功能以及如何使用它们: