使用"插孔在数组中插值" (蒙面数组)

时间:2016-06-22 11:07:32

标签: python arrays interpolation mesh masked-array

我有一组非网格点和一个带洞的网格 - 由一个带有NaN的数组表示(一个蒙面数组?)。我正在尝试" map"非网格指向此网格,然后在网格上插值,NaN区域作为边界。

griddata可以好好插入这些数据,但是忽略了NaN值,以及NaN"墙上一侧的值"影响另一方的价值观。 (我希望这是有道理的。)

有没有人知道是否有办法强制griddata将NaN作为边界而不允许NaN区域一侧的点影响另一方?

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

Example Plot

左图是在非屏蔽数组上执行的griddata,右图是在屏蔽数组上执行的griddata。我希望不会看到插值跨越蒙面区域。

这是一个简化的例子,我的蒙面数组实际上有点复杂(在网格/数组中有一组空白的岛或“#34;孔”#34;因此无法真正处理隔离(在这个例子中将是一个解决方案)。

这是我到目前为止所做的:

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

0 个答案:

没有答案