import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
# 生成随机数据点
np.random.seed(123456)
x = np.random.rand(100) * 4.0 - 2.0
y = np.random.rand(100) * 4.0 - 2.0
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)
# 使用griddata进行插值
zi = griddata((x, y), z, (xi, yi), method='cubic')
# 绘制结果
plt.figure()
plt.imshow(zi, extent=(-2, 2, -2, 2), origin='lower')
plt.scatter(x, y, c=z)
plt.colorbar()
plt.title('Interpolated using griddata with cubic method')
plt.show()
numpy
生成了 100 个随机的 (x, y) 坐标,并计算对应的 z 值。(xi, yi)
,用于插值后的数据可视化。scipy.interpolate.griddata
函数对不规则分布的数据点 (x, y, z)
进行插值,得到在规则网格上的插值结果 zi
。这里使用的是三次样条插值方法(method='cubic'
)。matplotlib
将插值结果可视化,并在图上标记原始数据点。希望这段代码和解释对你有帮助!
上一篇:python rjust
下一篇:python str 转json
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站