首页 > 解决方案 > 3D分散数据的python/Scipy插值

问题描述

我想使用 python 实现 3D 分散数据的插值。

如,

z[0,0] = 1, z[0,4] =2, z[2,2]=4, z[4,0]=3, z[4,4]= 2(X 类似结构化二维向量z 值)

并对这些数据进行插值,以便我可以在这个 (x,y) 坐标之间得出 z 值,如 z[1,2]、z[2,3]、z[1,1]、...等。

我使用 scipy 和 numpy 进行如下编码,但我想使用 numpy.empty((5,5)) 不适合我的目的,因为 numpy.empty() 添加了无关紧要的值。我只想用 5 个点进行插值。

from scipy import interpolate
import numpy as np
x = np.linspace(0,4,5)
y = np.linspace(0,4,5)
xx,yy=np.meshgrid(x,y)
z = np.empty((5,5)) # I think this is wrong
z[0,0] = 1, z[0,4] =2, z[2,2]=4, z[4,0]=3, z[4,4]= 2 

f = interpolate.interp2d(x,y,z,kind='linear')

xt = np.linspace(0,4,10)
yt = np.linspace(0,4,10)
xxt, yyt = np.meshgrid(xt,yt)
ct = f(xt,yt)

我的预期输出是 2D 5x5(或更大区域,例如 7x7、9x9 等)数组的值,这是 5 个常数点的插值结果。你可以帮帮我吗?

标签: pythonnumpyscipyinterpolation

解决方案


推荐阅读