微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scipy.interpolate.UnivariateSpline 使用零权重和 nan 处理

如何解决scipy.interpolate.UnivariateSpline 使用零权重和 nan 处理

此类的 scipy documentation 中的

nan 处理建议使用权重,以便在计算插值时不考虑 nan 值。但是这个例子如果修改,当没有应用平滑时,对于低于下一个屏蔽的 x 值的 x 值返回 nan

from scipy.interpolate import UnivariateSpline
x,y = np.array([1,2,3,4]),np.array([1,np.nan,4])
w = np.isnan(y)
y[w] = 0.
spl = UnivariateSpline(x,y,w=~w,s =0,k=1)
print(spl(1))
print(spl(2))
print(spl(2.5))
print(spl(3))

这次退货

nan
nan
nan
3.0

我不明白这种行为,我不明白为什么会发生这种情况。我错过了什么? scipy.interpolate.InterpolatedUnivariateSpline 类也是如此。

如果我只索引非 nan 值并将它们传递给类,结果就是我所期望的。

from scipy.interpolate import UnivariateSpline
x,4])
w = np.isnan(y)
y[w] = 0.
spl = UnivariateSpline(x[~w],y[~w],k=1)
print(spl(1))
print(spl(2))
print(spl(2.5))
print(spl(3))

印刷品

1.0
2.0
2.5
3.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。