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)]`

这能解决你的问题吗?

是的,对不起,我注意到当我发布这篇文章时,我甚至回答了我自己的问题,无论如何,谢谢!我建议你现在就清理你的帖子,这样对未来的网站访问者会更有用。这毕竟是这个网站的目的。