我有一组非网格点和一个带洞的网格 - 由一个带有NaN的数组表示(一个蒙面数组?)。我正在尝试" map"非网格指向此网格,然后在网格上插值,NaN区域作为边界。
griddata可以好好插入这些数据,但是忽略了NaN值,以及NaN"墙上一侧的值"影响另一方的价值观。 (我希望这是有道理的。)
有没有人知道是否有办法强制griddata将NaN作为边界而不允许NaN区域一侧的点影响另一方?
到目前为止,我可以得到这个:
左图是在非屏蔽数组上执行的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