首页 > 解决方案 > 有没有办法为 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]。

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

预先感谢您的帮助。

标签: pythonscipyinterpolation

解决方案


您应该在之前修改列表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, max(x_min, s)) for s in mylist_tmp]
list2 =intertest(mylist)
print(list2)

推荐阅读