You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在10×10 NumPy数组上实现以(3,5)为中心的二维高斯分布

实现以(3,5)为中心的10×10二维高斯分布特征

下面是直接可行的Python实现方案,解决你使用scipy.stats.multivariate_normal.pdf时可能踩的坐标或参数设置问题:

完整代码示例

import numpy as np
from scipy.stats import multivariate_normal
import matplotlib.pyplot as plt

# 1. 生成10×10的网格坐标(数组坐标为(row, col)即(y, x)顺序)
rows = np.arange(10)
cols = np.arange(10)
y, x = np.meshgrid(rows, cols, indexing='ij')  # 用indexing='ij'保证输出维度和数组行列对应

# 2. 定义高斯分布核心参数
mean = [3, 5]  # 对应数组的(行, 列)坐标
# 协方差矩阵:对角线值越小,分布越集中;可根据需求调整
covariance = [[1, 0], 
              [0, 1]]

# 3. 计算每个坐标点的高斯概率密度
pos = np.dstack((y, x))
gaussian_feature = multivariate_normal.pdf(pos, mean=mean, cov=covariance)

# 此时gaussian_feature就是10×10的特征数组
print(gaussian_feature.shape)  # 输出 (10, 10)

# 4. 热力图验证结果
plt.figure(figsize=(6,5))
plt.imshow(gaussian_feature, cmap='viridis', origin='lower')
plt.scatter(5, 3, c='red', marker='x', s=100, label='中心(3,5)')  # scatter的坐标是(列, 行)
plt.colorbar(label='概率密度')
plt.legend()
plt.xlabel('列坐标')
plt.ylabel('行坐标')
plt.title('10×10二维高斯分布热力图')
plt.show()

关键注意事项

  • 坐标匹配:数组的(row, col)对应高斯分布的(y, x),indexing='ij'确保网格维度和数组行列完全对齐;绘制散点时要把列坐标放在前、行坐标放在后。
  • 分布调整:如果需要更宽/窄的高斯分布,直接修改协方差矩阵的对角线数值——数值越大,分布越分散;非对角线值控制斜向分布,不需要斜向时保持0即可。
  • 输入格式:np.dstack自动把二维坐标网格合并成multivariate_normal.pdf需要的三维输入格式,无需手动展平再重塑,直接得到目标维度的特征数组。

内容的提问来源于stack exchange,提问作者2023_resolution

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:55:54