Python 具有可能长度为1的阵列的规则网格插值

Python 具有可能长度为1的阵列的规则网格插值,python,numpy,scipy,Python,Numpy,Scipy,我正在尝试在常规网格上插值数据,这与scipy.interpolate.RegularGridInterpolator配合得很好,我在下面发布了一个3d数据的最小示例(可以有更多维度) 当栅格的所有方向上每个维度至少有2个值时,这种方法效果良好。不幸的是,我的一些网格只有1个值 在gridlength为1的维度中,由于无法插值,因此只需返回存储的值 我正在搜索在所有情况下都有效的函数扩展 如果所有Griddimensions都至少为2,则下面的代码可以工作,但我将最后一个代码更改为1,以显示应该

我正在尝试在常规网格上插值数据,这与scipy.interpolate.RegularGridInterpolator配合得很好,我在下面发布了一个3d数据的最小示例(可以有更多维度) 当栅格的所有方向上每个维度至少有2个值时,这种方法效果良好。不幸的是,我的一些网格只有1个值

在gridlength为1的维度中,由于无法插值,因此只需返回存储的值

我正在搜索在所有情况下都有效的函数扩展

如果所有Griddimensions都至少为2,则下面的代码可以工作,但我将最后一个代码更改为1,以显示应该工作的内容

#Data creation for minimal test
def f(x, y, z):
    return x**2 + y**2 + z**2
   
Grid=(np.array([0,1,4,5]),# can be length 1 as well
      np.array([0,1]),# can be length 1 as well
      np.array([0]))#works for [0,1]
Grid_Res=f(*np.meshgrid(*Grid, indexing='ij'))

#Interpolation

f=interpolate.RegularGridInterpolator(Grid,Grid_Res,method="linear")

print(f((1,0,0.5)))#expected result is 1 (1^2+0^2+0^2)