我尝试在python中创建正态分布。我做了以下代码:

    prior = []
    variance = 20
    mean = 0.5
    x = -100

    while x <= 100:
            normal_distribution = 1/np.sqrt(1*np.pi*variance*variance)*np.exp(np.power(x-mean,2)/(2*variance*variance))
            prior.extend(normal_distribution)
            ++x


但是我收到一个类型错误:

TypeError: 'numpy.float64' object is not iterable


我尝试过normal_distribution = ...在while循环之外有一个值。
我不完全理解为什么它不能迭代。

最佳答案

存在三个问题:


您要的是.append,而不是.extend;这是错误的根源,因为.extend需要可迭代对象作为参数,因此可以将其每个元素附加到列表中。您要添加一个元素-这就是.append的作用
您的pdf公式无效,您应该有


2而不是平方根下的1
exp内的否定
您的variance变量用于std的含义


1/np.sqrt(2*np.pi*variance)*np.exp(-(x-mean)**2/(2*variance))
python中没有++x这样的东西,请使用x += 1

关于python - 在python中创建正态分布,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33574174/

10-12 18:06