用于屏蔽或无序输入数据的 Python 2d 插值

问题描述

我拥有的数据是频率 (f) 和 theta *(th) *它们是对应于二维物体光束的坐标 ( b)。即:(f_i,th_i) == b_ii

我使用 scipy.interpolate.interp2d 设置了 2d 插值。效果很好,直到我按降序使用新输入数据或使用掩码数组 (掩码值变为 0 重新排序数据,使零值排在第一位。

如果我重新应用蒙版,由于数据的顺序,它会出现在不正确的位置。有人有简单的解决方法吗?

注意: 新输入值在原始网格设置的范围内。

解决方法

来自Scipy-interp2d returned function sorts input argument automatically and undesirably的解决方案

基于以上链接提交的内容

from scipy.interpolate import interp2d
import numpy as np

class unsorted_interp2d(interp2d):
    def __call__(self,x,y,dx=0,dy=0):
        unsorted_idxs = np.argsort(np.argsort(x))
        return interp2d.__call__(self,dx=dx,dy=dy)[:,unsorted_idxs]

刚刚将 [unsorted_idxs] 更改为 [:,unsorted_idxs] 以适用于 2d 对象中的所有 x 值

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...