python-3.x - 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
. 发生了什么变化?有没有人碰巧知道?
谢谢你。
解决方案
当away.__call__(x)
传递一个位于凸包x
之外的值时,就会发生这种情况- 本质上,当位于插值区域之外时。x
推荐阅读
- python - 如何将 cv2.triangulatePoints 与单个移动相机一起使用
- python - 在 Python 中将 Spark 数据帧转换为 HDF5 文件
- ruby - 如何将数组传递给 AWX/Ansible Tower
- c# - FindControl() 总是从 DataList 文本框返回 null
- r - 重复测量方差分析 DFd 为零
- google-translate - 如何获得指向谷歌翻译网页翻译的链接?
- c++ - 如何搜索哪个 int 在数组的哪个槽中?
- java - 无法使用 Java 中的 Selenium 登录 Google 服务:“此浏览器或应用程序可能不安全。”
- ruby-on-rails - 使用 MiniMagick 调整大小时如何保持背景透明度?
- android - 共享时防止 Android 应用与每种文件类型关联