用 Python Matplotlib 对含 NaN 的图像进行高斯滤波
对含有 NaN 值的图像进行高斯滤波会使矩阵中的所有值变为 NaN,从而产生一个 NaN 值矩阵。
步骤
- 创建一个图形和一个子图集。
- 创建一个含有 NaN 值的矩阵。
- 将数据显示为图像,即在二维常规栅格上, 数据 。
- 对数据应用高斯滤波。
- 将数据显示为图像,即在二维常规栅格上, 高斯滤波数据 。
- 使用 show() 方法显示图形。
例子
import numpy as np
from matplotlib import pyplot as plt
from scipy.ndimage import gaussian_filter
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, axes = plt.subplots(2)
data = np.array([[1., 1.2, 0.89, np.nan],
[1.2, np.nan, 1.89, 2.09],
[.78, .67, np.nan, 1.78],
[np.nan, 1.56, 1.89, 2.78]])
axes[0].imshow(data, cmap="cubehelix_r")
gaussian_filter_data = gaussian_filter(data, sigma=1)
axes[1].imshow(gaussian_filter_data, cmap="cubehelix_r")
plt.show()