numpy计算二维正态分布
时间: 2025-07-31 13:27:40 浏览: 13
### 使用 Numpy 实现二维正态分布
为了生成二维正态分布数据,`numpy` 提供了 `np.random.multivariate_normal` 函数来创建多变量正态分布样本。该方法允许指定均值向量和协方差矩阵作为参数。
以下是具体的实现方式:
#### 导入必要的库
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import multivariate_normal
```
#### 定义均值向量与协方差矩阵
定义两个维度上的平均值以及它们之间的关系(即协方差)。这可以通过构建一个二阶张量完成,其中对角线表示各自的标准偏差平方,而非对角元素则代表两者的关联程度[^1]。
```python
mean = [0, 0]
covariance_matrix = [[1, 0],
[0, 1]] # 协方差为零意味着这两个特征之间不存在线性相关性
```
#### 生成随机样本点
利用上述设置好的均值向量和协方差矩阵调用 `multivariate_normal.rvs()` 方法获取服从给定条件下的随机抽样集合[^3]。
```python
data_points = np.random.multivariate_normal(mean, covariance_matrix, size=500)
```
#### 可视化结果
通过绘制散点图展示这些数据点的空间分布情况,并可选地叠加理论概率密度曲面以便更直观理解其形态特性[^2]。
```python
x, y = data_points.T
plt.scatter(x, y, alpha=.5)
rv = multivariate_normal([0., 0.], [[1, 0],[0, 1]])
X, Y = np.meshgrid(np.linspace(-4,4), np.linspace(-4,4))
pos = np.dstack((X, Y))
Z = rv.pdf(pos)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.show()
```
这段代码不仅展示了如何使用 NumPy 来模拟二维高斯过程,还提供了可视化工具帮助观察所得样本集的整体趋势及其对应的理想模型形状。
阅读全文
相关推荐




















