Python 在参数分布上迭代
我有这样的剧本:Python 在参数分布上迭代,python,for-loop,statistics,Python,For Loop,Statistics,我有这样的剧本: def simulacion(b=3.00, theta=1.00, delta=1.00, m=1000000): S= np.zeros(m) N = (np.floor(((np.random.pareto(b, m) + 1) * 1)- theta)) i_N = [ x for x in N if x>=1] print(i_N) Y= np.zeros(0) for i in i_N:
def simulacion(b=3.00, theta=1.00, delta=1.00, m=1000000):
S= np.zeros(m)
N = (np.floor(((np.random.pareto(b, m) + 1) * 1)- theta))
i_N = [ x for x in N if x>=1]
print(i_N)
Y= np.zeros(0)
for i in i_N:
Yi =(np.random.pareto(2+ 1/N[i],N[i])+1)*x_m
S[i] = sum(Y_i)
np.append(Y,Y_i)
ES, VS, MS, VaRS = np.mean(S), np.var(S), np.percentile(S,50), np.percentile(S,5)
return [S, ES, VS, MS, VaRS, N, Y]
这是一个关于具有帕累托分布的保证政策的模拟,但正如您可能注意到的,在for循环中我迭代了帕累托分布的参数:
Yi =(np.random.pareto(2+ 1/N[i],N[i])+1)*x_m
但我得到了这个错误代码:
Only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices.
这清楚地告诉我,在我生成Pareto模拟的那一刻,Python没有识别出For循环的
如何修复此问题?我得到了错误,这是因为我正在迭代的数据类型:
N = (np.floor(((np.random.pareto(b, m) + 1) * 1)- theta))
是一个浮点数组,所以我只是简单地将其转换为整数数组,使用:
N = N.astype(int)
首先,请仔细检查你在做什么 您正在迭代一个随机浮点数样本。您不能迭代连续分布,这是一个概率“云” 我不明白您是如何得出Python不识别
for
循环的结论的,因为错误是从该循环中抛出的
您没有正确打印有问题的值数组:i\u N
。这是一个浮动数组。I float不能用作下标。我怀疑你在那条线上想要的是
`N[int(i)]`
这能解决你的问题吗?是的,对不起,我注意到当我发布这篇文章时,我甚至回答了我自己的问题,无论如何,谢谢!我建议你现在就清理你的帖子,这样对未来的网站访问者会更有用。这毕竟是这个网站的目的。