unu*_*tbu 175
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math
mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()
Run Code Online (Sandbox Code Playgroud)

lum*_*lum 47
我不认为有一个功能可以在一次通话中完成所有这些功能.但是你可以在中找到高斯概率密度函数scipy.stats.
所以我能提出的最简单的方法是:
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# Plot between -10 and 10 with .001 steps.
x_axis = np.arange(-10, 10, 0.001)
# Mean = 0, SD = 2.
plt.plot(x_axis, norm.pdf(x_axis,0,2))
plt.show()
Run Code Online (Sandbox Code Playgroud)
资料来源:
小智 17
使用 seaborn 代替我使用的是 seaborn 的 distplot,其均值 = 5 std = 3 of 1000 个值
value = np.random.normal(loc=5,scale=3,size=1000)
sns.distplot(value)
Run Code Online (Sandbox Code Playgroud)
你会得到一条正态分布曲线
Joã*_*tas 13
如果您更喜欢使用循序渐进的方法,您可以考虑如下解决方案
import numpy as np
import matplotlib.pyplot as plt
mean = 0; std = 1; variance = np.square(std)
x = np.arange(-5,5,.01)
f = np.exp(-np.square(x-mean)/2*variance)/(np.sqrt(2*np.pi*variance))
plt.plot(x,f)
plt.ylabel('gaussian distribution')
plt.show()
Run Code Online (Sandbox Code Playgroud)
Unutbu答案是正确的.但由于我们的平均值可能大于或小于零,我仍然想改变这个:
x = np.linspace(-3 * sigma, 3 * sigma, 100)
Run Code Online (Sandbox Code Playgroud)
对此:
x = np.linspace(-3 * sigma + mean, 3 * sigma + mean, 100)
Run Code Online (Sandbox Code Playgroud)
我相信设置高度很重要,因此创建了这个函数:
def my_gauss(x, sigma=1, h=1, mid=0):
from math import exp, pow
variance = pow(sigma, 2)
return h * exp(-pow(x-mid, 2)/(2*variance))
Run Code Online (Sandbox Code Playgroud)
其中sigma是标准差,h是高度,mid是平均值。
到:
plt.close("all")
x = np.linspace(-20, 20, 101)
yg = [my_gauss(xi) for xi in x]
Run Code Online (Sandbox Code Playgroud)
这是使用不同高度和偏差的结果:
| 归档时间: |
|
| 查看次数: |
181483 次 |
| 最近记录: |