首页 > 解决方案 > scipy LinearNDInterpolator 返回的不寻常的 nan

问题描述

我正在尝试使用上述 scipy 函数(此处为官方文档;此处为源代码)用 python(3.8.1)插入以下数据。官方文档非常稀少,所以我希望那里的其他人会有一些使用该功能的经验,并且可能知道这个问题的根源。具体来说,我运行以下四行代码:

    predictor = [[-1.7134013337139833, 0.9582376963057636, -0.21528572746395735], [3.25933089248862, -0.7087236333980123, 0.012808817274351122], [-0.5596739049487544, -1.8723369742231246, 0.03114189522349198], [0.23080764211370225, 1.0639221305852422, -0.602148693975945], [-0.9879484423429669, -0.16678510825693527, 0.5570132252912631], [0.0029439785978213986, -0.10016927713200409, -0.18197412051828055], [0.3530872261969887, 0.6347161018351574, 0.7285361235605389], [-1.122894723267098, 0.22837861478723648, -0.9022469946784363], [-0.02862856314533664, 0.014623415207400122, 3.078346263312741], [-1.3367570531570616, -0.3218239542354167, 0.489878302042675]]
    respose = [0.020235605909933625, 1.4729016163456679e-05, 0.021931080605237303, 0.21271851410989498, 0.26870984350693583, 0.9577608837143238, 0.3470452852299319, 0.11918254249689647, 7.657429164576589e-05, 0.1187813551565562]
    from scipy.interpolate import LinearNDInterpolator
    away = LinearNDInterpolator(predictor, response)

现在,如果我写away.__call__([0,0,0])[0]然后 python 返回0.8208492283847619,这是期望的结果,并且是基于给定测试数据的合理值。同样,away.__call__([0,0,1])[0]返回0.22018657078617598也是一个合理的值。但是,away.__call__([0,1,1])[0]返回nan. 发生了什么变化?有没有人碰巧知道?

谢谢你。

标签: python-3.xscipy

解决方案


away.__call__(x)传递一个位于凸包x之外的值时,就会发生这种情况- 本质上,当位于插值区域之外时。x


推荐阅读