Grid Scipy-从一个不规则网格到另一个不规则间距网格的数据插值

Grid Scipy-从一个不规则网格到另一个不规则间距网格的数据插值,grid,2d,scipy,interpolation,Grid,2d,Scipy,Interpolation,我正在努力解决两个网格之间的插值问题,但我找不到适合我的问题的解决方案 我有两个不同的2D网格,其中的节点由它们的X和Y坐标定义。网格本身不是矩形,但或多或少形成一个平行四边形(因此(i,j)的X坐标与(i,j+1)不同,并且(i,j)的Y坐标与(i+1,j)的Y坐标不同)。 两个网格的形状都是37*5,几乎完全重叠 对于第一个网格,我有每个点的X坐标、Y坐标和压力值。现在我想在第二个网格上插值第一个网格的压力分布(每个点的X和Y也是已知的) 我尝试了不同的插值方法,但由于网格点的不规则分布,最

我正在努力解决两个网格之间的插值问题,但我找不到适合我的问题的解决方案

我有两个不同的2D网格,其中的节点由它们的X和Y坐标定义。网格本身不是矩形,但或多或少形成一个平行四边形(因此(i,j)的X坐标与(i,j+1)不同,并且(i,j)的Y坐标与(i+1,j)的Y坐标不同)。 两个网格的形状都是37*5,几乎完全重叠

对于第一个网格,我有每个点的X坐标、Y坐标和压力值。现在我想在第二个网格上插值第一个网格的压力分布(每个点的X和Y也是已知的)

我尝试了不同的插值方法,但由于网格点的不规则分布,最终结果总是不正确。 作为interp2d或griddata的函数需要一个1D数组作为输入,但如果我这样做,插值的解决方案是错误的(即使我在原始栅格上再次插值原始栅格中的压力值,新的压力值也会与原始值相差数英里)

对于不同不规则网格上的1D插值,我使用:

def interpolate(X, Y, xNew):
    if xNew<X[0]:
        print 'Interp Warning :', xNew,'is under the interval [',X[0],',',X[-1],']'
        yNew = Y[0]
    elif  xNew>X[-1]:
        print 'Interp Warning :', xNew,'is above the interval [',X[0],',',X[-1],']'
        yNew = Y[-1]
    elif xNew == X[-1] : yNew = Y[-1]
    else:
        ind = numpy.argmax(numpy.bitwise_and(X[:-1]<=xNew,X[1:]>xNew))
        yNew = Y[ind] + ((xNew-X[ind])/(X[ind+1]-X[ind]))*(Y[ind+1]-Y[ind])

    return yNew
def插值(X,Y,xNew):
如果xNewX[-1]:
打印“Interp Warning:”,xNew,'高于间隔[”,X[0],,,,,,,X[-1],']
yNew=Y[-1]
elif xNew==X[-1]:yNew=Y[-1]
其他:
ind=numpy.argmax(numpy.bitwise_和(X[:-1]xNew))
yNew=Y[ind]+((xNew-X[ind])/(X[ind+1]-X[ind])*(Y[ind+1]-Y[ind])
返回yNew

但对于2D,我认为griddata更容易使用。有没有人有过插值的经验,我的输入是网格和数据的2D数组?

再看看interp2d

请注意“参数”下“x,y”部分的第二个示例。“x”和“y”是松散意义上的一维,但它们可以是扁平阵列

应该是这样的:

f = scipy.interpolate.interp2d([0.25, 0.5, 0.27, 0.58], [0.4, 0.8, 0.42,0.83], [3, 4, 5, 6])

znew = f(.25,.4)

print znew
[ 3.]

znew = f(.26,.41)   # midway between (0.25,0.4,3) and (0.27,0.42,5)

print znew
[ 4.01945345]     # Should be 4 - close enough?

我本以为可以将展平的“xnew”和“ynew”数组传递给“f()”,但我无法实现这一点。“f()”函数将接受行、列语法,但这对您没有用处。因为“f()有此限制'您必须将'znew'作为循环的一部分进行评估-可能应该查看nditer以了解这一点。同时确保当'(xnew,ynew)'在'(x,y)之外时,它会执行您想要的操作。''domain.

griddata
如果你只是
ravel
你的输入数组,你能描述一下griddata是如何失败的吗?