将高斯附加到数组

问题描述

我正在尝试编写附加到高斯概率密度函数数组值的代码。我设法写了这个(基于附加到列表):

N=100
U = numpy.array([])
for i in range(0,N):
    n = random.random()
    numpy.append(U,n)
for i in range(0,int(N/2)):
    u1 = U[i]
    u2 = U[i+1]
    numpy.append(U,math.sqrt(-2*math.log(u1))*math.cos(2*math.pi*u2))
    numpy.append(U,math.sqrt(-2*math.log(u1))*math.sin(2*math.pi*u2))

但它向我显示“索引 0 超出轴 0 的范围,大小为 0”错误。有人可以向我解释原因,我可以做些什么来解决它?

解决方法

numpy.append 不会就地发生,这意味着它不会修改初始数组,它只是返回一个附加了值的新数组。因此,对您的代码的一种可能修复是替换:

numpy.append(U,n)

U = numpy.append(U,n)