我想要一个Python实现的正态分布
时间: 2023-11-05 12:13:17 浏览: 32
你可以使用Python的`scipy.stats`模块中的`norm`函数来实现正态分布。具体实现如下:
```python
from scipy.stats import norm
# 设置均值和标准差
mu, sigma = 0, 0.1
# 生成正态分布随机数
s = np.random.normal(mu, sigma, 1000)
# 绘制正态分布概率密度函数
import matplotlib.pyplot as plt
count, bins, ignored = plt.hist(s, 30, density=True)
plt.plot(bins, 1/(sigma * np.sqrt(2 * np.pi)) *
np.exp( - (bins - mu)**2 / (2 * sigma**2) ),
linewidth=2, color='r')
plt.show()
```
其中,`mu`为正态分布的均值,`sigma`为正态分布的标准差,`s`为生成的一组正态分布随机数。最后,使用`matplotlib`库绘制正态分布概率密度函数。
相关问题
python做正态分布的例子_python实现正态分布
可以使用Python中的`scipy.stats`库来实现正态分布。下面是一个例子:
```python
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# 定义正态分布的参数
mu = 0 # 均值
sigma = 1 # 标准差
# 生成随机数
x = np.linspace(-5, 5, num=1000)
y = norm.pdf(x, loc=mu, scale=sigma)
# 绘制正态分布曲线
plt.plot(x, y)
plt.show()
```
这段代码会生成一个正态分布的概率密度函数曲线,并将其绘制在屏幕上。可以通过调整`mu`和`sigma`参数来生成不同均值和标准差的正态分布。
python实现正态分布外点剔除的例子
以下是使用Python实现正态分布外点剔除的示例代码:
```python
import numpy as np
def remove_outliers(data):
mean = np.mean(data)
std = np.std(data)
threshold = 3 * std
filtered_data = [x for x in data if (mean - threshold) < x < (mean + threshold)]
return filtered_data
# 示例数据
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
filtered_data = remove_outliers(data)
print(filtered_data)
```
在上述示例中,`remove_outliers`函数接受一个数据列表作为输入,并返回剔除外点后的新列表。函数首先计算数据的平均值和标准差,然后根据3倍标准差原则确定阈值。最后,使用列表推导式过滤出位于阈值范围内的数据,并将其存储在`filtered_data`列表中。
输出结果将是`[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`,即剔除了数据集中的外点100。