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

Python中Gaussian filter应用:3D数组切片密度场平滑问题

高斯平滑密度场的正确做法与代码实现

核心结论

  • 必须先平滑原始密度场数据,再重新绘制轮廓图。直接对已绘制的轮廓图做平滑是不可行的——轮廓图是可视化的图形结果,不是数值数据,无法进行有效的高斯滤波处理。

完整实现代码

假设你的3D密度数组名为density_3d,直接用以下代码即可完成平滑与绘图:

import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import gaussian_filter

# 提取中心切片(第三维索引为64)
density_slice = density_3d[:, :, 64]

# 应用高斯滤波:sigma控制平滑强度,值越大越平滑,可按需调整
smoothed_data = gaussian_filter(density_slice, sigma=2)

# 对比绘制原始与平滑后的轮廓图
plt.figure(figsize=(12, 5))

# 原始轮廓图
plt.subplot(1, 2, 1)
orig_contour = plt.contour(density_slice)
plt.clabel(orig_contour, inline=True, fontsize=8)
plt.title('原始密度场')
plt.xlabel('X')
plt.ylabel('Y')

# 平滑后轮廓图
plt.subplot(1, 2, 2)
smoothed_contour = plt.contour(smoothed_data)
plt.clabel(smoothed_contour, inline=True, fontsize=8)
plt.title('高斯平滑后密度场')
plt.xlabel('X')
plt.ylabel('Y')

plt.tight_layout()
plt.show()

关键说明

  • sigma参数是高斯核的标准差,建议从1到5之间尝试,找到适配你数据的平滑程度。
  • 如果你的3D数组是其他数据结构(如xarray),只需调整切片提取的代码,高斯滤波的逻辑完全通用。

内容的提问来源于stack exchange,提问作者Manos Bougioukoglou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:25:25