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

有没有办法为 interp1d 配置变量 fill_values?

如何解决有没有办法为 interp1d 配置变量 fill_values?

我不知道我的问题是否很清楚,我很抱歉。 这是我将用来说明我需要做什么的示例:

from scipy.interpolate import interp1d
intertest = interp1d([500,1000],[-1,1])
mylist = [400,500,1000,1100]
list2 =intertest(mylist)
print(list2)

显然,我得到了一个 ValueError,因为有值(400 和 1100)超出了插值范围。但我想知道是否有可能设置一个配置,使范围外的值变为范围内最接近的值(400 将变为 500,1100 将变为 1000),在这种情况下,结果将为 [-1,-1,1,1]。

在实际情况下,数据非常大,如果解决方案是插值配置会更好,因为它可以直接应用于数据数组。

预先感谢您的帮助。

解决方法

您应该在 interp1d 之前修改列表:[min(x_max,max(x_min,s)) for s in mylist_tmp]

from scipy.interpolate import interp1d
x_min=500
x_max=1000
intertest = interp1d([x_min,x_max],[-1,1])
mylist_tmp = [400,500,1000,1100]
mylist=[min(x_max,s)) for s in mylist_tmp]
list2 =intertest(mylist)
print(list2)

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