使用线性插值器(Python)的三维插值
我想使用scipy LINEARDINTERPOLATOR函数(Python 2.7)插入一些三维数据。不过,我不太明白如何使用它:下面是我的尝试。我得到了错误值error:不同数量的值和点数。这让我相信“coords”的形状不适合这些数据,但在文档中看起来这个形状还可以 请注意,在我真正想要使用的数据(而不是本例)中,我的网格的间距是不规则的,因此类似RegularGridInterpolator的东西不会起作用 非常感谢你的帮助使用线性插值器(Python)的三维插值,python,python-2.7,multidimensional-array,scipy,interpolation,Python,Python 2.7,Multidimensional Array,Scipy,Interpolation,我想使用scipy LINEARDINTERPOLATOR函数(Python 2.7)插入一些三维数据。不过,我不太明白如何使用它:下面是我的尝试。我得到了错误值error:不同数量的值和点数。这让我相信“coords”的形状不适合这些数据,但在文档中看起来这个形状还可以 请注意,在我真正想要使用的数据(而不是本例)中,我的网格的间距是不规则的,因此类似RegularGridInterpolator的东西不会起作用 非常感谢你的帮助 def f(x,y,z): return 2 * x*
def f(x,y,z):
return 2 * x**3 + 3 * y**2 - z
x = np.linspace(1,2,2)
y = np.linspace(1,2,2)
z = np.linspace(1,2,2)
data = f(*np.meshgrid(x, y, z, indexing='ij', sparse=True))
coords = np.zeros((len(x),len(y),len(z),3))
coords[...,0] = x.reshape((len(x),1,1))
coords[...,1] = y.reshape((1,len(y),1))
coords[...,2] = z.reshape((1,1,len(z)))
coords = coords.reshape(data.size,3)
my_interpolating_function = LinearNDInterpolator(coords,data)
pts = np.array([[2.1, 6.2, 8.3], [3.3, 5.2, 7.1]])
print(my_interpolating_function(pts))
您的输入(coords
和data
)具有形状(2,2,2)和(8,3)。对吗?我觉得这不对劲。在文档中,每个输入的第一个dim(npoints
)必须相同!由于函数从三个参数返回一个值,所以坐标应为(N,3),数据应为(N,1)。输入(coords
和data
)具有形状(2,2,2)和(8,3)。对吗?我觉得这不对劲。在文档中,每个输入的第一个dim(npoints
)必须相同!因为您的函数从三个参数返回一个值,所以坐标应该是(N,3),数据应该是(N,1)。