我有一个 numpy 掩码矩阵。并想在蒙版区域进行插值。 我尝试了 RectBivariateSpline,但它没有将蒙版区域识别为蒙版,并且还使用这些点进行插值。在创建 X、Y、Z 1d 向量后,我还尝试了 bisplrep。它们的长度均为 45900。计算 B 样条曲线需要花费大量时间。最后在运行 bisplev 时给出了 Segmentation fault 。 二维矩阵的大小为 270x170。
有什么方法可以使 RectBivariateSpline 不在插值中包含 mask 区域?或者还有其他方法吗? bisplrep 太慢了。
谢谢你, 印度乔
更新: 当网格很小时,具有“线性”功能的 scipy.interpolate.Rbf 正在做合理的工作。但是当数组很大时会报错。
是否有任何其他函数可以让我对矩阵进行插值和平滑处理?
我还得出以下结论。如果我错了,请纠正我。
1) RectBivariateSpline 需要完美的填充矩阵,因此不能使用掩码矩阵。
最佳答案
很晚了,但是...
我遇到了与您类似的问题,双样条出现段错误,rbf 出现内存错误(其中“thin_plate”函数对我非常有用。
由于我的数据是非结构化的,但是是以结构化的方式创建的,所以我使用下采样到数据点密度的一半或三分之一,这样我就可以使用 Rbf。我建议你做的是(非常低效,但仍然比根本不做更好)在许多重叠区域分割矩阵,然后为每个区域创建 rbf 插值器,然后当你插值一个点时,你选择合适的插值器。
此外,如果您有一个掩码数组,您仍然可以在未掩码数组中执行插值,然后对结果应用掩码。(实际上没有,请参阅评论)
希望对大家有帮助
关于python - 大型二维掩码数组的插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644735/