在Python中,我们可以使用scipy.interpolate
库中的griddata
函数进行二维插值。
import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import griddata # 创建原始数据点 x = np.random.uniform(-2, 2, 100) y = np.random.uniform(-2, 2, 100) z = x * np.exp(-x ** 2 - y ** 2) # 定义插值的网格点 xi = np.linspace(-2.0, 2.0, 100) yi = np.linspace(-2.0, 2.0, 100) # 创建网格 xi, yi = np.meshgrid(xi, yi) # 进行二维插值 zi = griddata((x, y), z, (xi, yi), method='cubic') # 绘制插值后的图像 plt.imshow(zi, vmin=zi.min(), vmax=zi.max(), origin='lower', extent=[-2, 2, -2, 2], aspect='auto') plt.scatter(x, y, c=z, edgecolor='k') plt.colorbar() plt.xlabel('X') plt.ylabel('Y') plt.title('2D Interpolation') plt.show()