2

我有一组非网格点和一个带有孔的网格 - 由一个包含 NaN 的数组表示(一个掩码数组?)。我试图将非网格点“映射”到这个网格上,然后在网格上进行插值,NaN 区域作为边界。

griddata 可以很好地插入此数据,但会忽略 NaN 值,并且 NaN“墙”一侧的值会影响另一侧的值。(我希望这是有道理的)。

有谁知道是否有任何方法可以强制 griddata 以 NaN 作为边界,并且不允许 NaN 区域一侧的点影响另一侧?

到目前为止,我可以得到这个:

示例图

左图是在非屏蔽数组上执行的网格数据,右图是在屏蔽数组上执行的网格数据。我希望不要看到插值穿过蒙版区域。

这是一个简化的示例,我的蒙版阵列实际上有点复杂(网格/阵列中有一组空白岛或“孔”),因此不能真正孤立地处理部分(就像在这个例子)。

这是我到目前为止所拥有的:

X = np.asarray(cfdx[1:])
Y = np.asarray(cfdy[1:])
Z = np.asarray(errors)


xi = np.linspace(X.min(),X.max(),100)
yi = np.linspace(Y.min(),Y.max(),100)

xii = xi
yii = yi

zii = griddata((X, Y), Z, (xii[None,:], yii[:,None]), method='cubic')

fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.add_subplot(121)
CS = plt.contourf(xii,yii,zii,15)

xi[45:50] = np.NaN
yi[45:50] = np.NaN

zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='cubic')

ax2 = fig.add_subplot(122)
CS2 = plt.contourf(xi,yi,zi,15)

plt.show()

任何帮助将不胜感激!

FP

4

0 回答 0