【问题标题】:Interpolation of large 2d masked array大型二维掩码阵列的插值
【发布时间】:2012-03-27 12:49:16
【问题描述】:

我有一个 numpy 掩码矩阵。并想在蒙版区域进行插值。 我尝试了 RectBivariateSpline,但它没有将蒙面区域识别为蒙面,并使用这些点进行插值。在创建 X、Y、Z 1d 向量后,我还尝试了 bisplrep。它们的长度均为 45900。计算 Bsplines 需要花费大量时间。最后在运行 bisplev 时给出了分段错误。 二维矩阵的大小为 270x170。

有什么方法可以使 RectBivariateSpline 不在插值中包含蒙版区域?或者还有其他方法吗? bisplrep 太慢了。

谢谢你, 印第安乔

更新: 当网格很小时,具有“线性”功能的 scipy.interpolate.Rbf 正在做合理的工作。但是当数组很大时会出错。

还有其他函数可以让我对矩阵进行插值和平滑吗?

我还得出以下结论。如果我错了,请纠正我。

1) RectBivariateSpline 需要完美的填充矩阵,因此不能使用掩码矩阵。

【问题讨论】:

    标签: python matrix numpy scipy interpolation


    【解决方案1】:

    很晚了,但是……

    我遇到了与您类似的问题,并且遇到了 bisplines 的分段错误,以及 rbf 的内存错误(其中“thin_plate”函数对我很有用。

    由于我的数据是非结构化的,而是以结构化方式创建的,因此我使用下采样到数据点密度的一半或三分之一,以便可以使用 Rbf。我建议你做的是(非常低效,但总比不做要好)将矩阵细分为许多重叠区域,然后为每个区域创建 rbf 插值器,然后在插值一个点时选择适当的插值器。

    另外,如果你有一个掩码数组,你仍然可以在未掩码数组中执行插值,然后在结果上应用掩码。(实际上没有,请参阅 cmets)

    希望这对某人有所帮助

    【讨论】:

    • “另外,如果你有一个掩码数组,你仍然可以在未掩码数组中执行插值,然后在结果上应用掩码。”。一般没有。被屏蔽的值可能是无意义的。如果您在插值中考虑这​​种废话,您将得到废话结果,即使在蒙版区域之外。
    猜你喜欢
    • 2021-07-14
    • 2020-06-16
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多