Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 蒙特卡罗模拟中样本均值的计算_Python_Performance_Mean_Montecarlo - Fatal编程技术网

Python 蒙特卡罗模拟中样本均值的计算

Python 蒙特卡罗模拟中样本均值的计算,python,performance,mean,montecarlo,Python,Performance,Mean,Montecarlo,我对n个样本进行了蒙特卡罗模拟。对于每个样本i,我需要计算值席,所以我可能得到的结果是: X=[X1,X2,…,Xn] (这里席可以是矩阵或数)。< /P> 现在我想计算这些样本的平均值,我称之为Xmean。所以我需要得到这样的东西: Xmean=[X1,(X1+X2)/2,(X1+X2+X3)/3…,(X1+X2+…+Xn)/n] 在Python中,我编写了一段代码: for i in range(N): for j in range(i+1): Xmean(i) =

我对n个样本进行了蒙特卡罗模拟。对于每个样本i,我需要计算值席,所以我可能得到的结果是:

X=[X1,X2,…,Xn]

(这里席可以是矩阵或数)。< /P> 现在我想计算这些样本的平均值,我称之为Xmean。所以我需要得到这样的东西:

Xmean=[X1,(X1+X2)/2,(X1+X2+X3)/3…,(X1+X2+…+Xn)/n]

在Python中,我编写了一段代码:

for i in range(N):
    for j in range(i+1):
         Xmean(i) = Xmean(i) + X(j)
    Xmean(i) = Xmean(i) / (i+1)
它工作得很好,但太慢了,我想知道我是否可以加快这个代码?如果你们能给我推荐一些有趣的Python库,对蒙特卡罗模拟有帮助的话


谢谢,

只需减少计算量

Xmean(0) = X(0)
for i in range(N-1):
    Xmean(i+1) = (Xmean(i)*(i+1) + X(i+1))/(i+2)
结果:

mc0                  26.023956370918587
mc1                  0.1423197092108488
mc2                  0.13584513496654083

当您在
xmean
中已有可用信息时,在每个循环迭代中重新计算
x(1)…x(i)
上的和没有意义。Donbeo的numpy版本略快于我的纯Python版本,两者都比原始版本快近200倍(无论如何,对于这些数据而言)。

如果使用numpy,应该很容易

import numpy as np

X = [1,5,3,8,6,9]
Xmean = np.cumsum(X)
Xmean = Xmean/np.array(range(1,len(X)+1)

谢谢,它确实更快:我认为这是正确的:Xmean=Xmean/np.array(范围(1,len(X)+1))
import numpy as np

X = [1,5,3,8,6,9]
Xmean = np.cumsum(X)
Xmean = Xmean/np.array(range(1,len(X)+1)