scipy.interpolate.interp1d外插结果错误,如何让超出范围时报错
问题原因
你代码中设置了fill_value='extrapolate'参数,该配置会强制interp1d对超出样本x轴(即frc列)取值范围的输入执行外插计算,因此不会触发边界校验报错,反而返回不符合预期的外插结果。
你提供的frc列取值范围为-16051.253 ~ 17298.647,输入的-17000超出了左边界,因此得到了异常的外插结果。
解决方法
直接移除fill_value='extrapolate'参数,使用interp1d的默认配置即可:interp1d默认开启bounds_error=True,只要输入值超出x轴的取值范围,就会直接抛出ValueError,完全符合你的需求。
修改后代码
import pandas as pd from scipy.interpolate import interp1d df = pd.read_csv('111.txt', sep='\t') print(df) # 移除extrapolate参数,使用默认边界校验规则 interpi = interp1d(df['frc'], df['ang']) print(interpi(-17000))
异常输出示例
当输入值超出frc的取值范围时,程序会直接抛出如下错误:
ValueError: A value in x_new is below the interpolation range.
内容的提问来源于stack exchange,提问作者umn
相关产品推荐
相关产品推荐

