相关疑难解决方法(0)

scipy.interpolate.interp1d是否存在导致x值的十进制值问题?

我正在尝试使用scipy中的interp1d()来插入一些数据,但是我一直在输出out或range错误.经过几个小时的谷歌搜索,我现在知道x值不按递增顺序将导致我得到的相同错误,但我已经确定这不是问题.据我所知,看起来interp1d()不喜欢第一个值中的小数.我错过了什么吗?

我的问题的简化版本:

以下运行很好.

import numpy as np
from scipy.interpolate import interp1d

interp1d(np.array([1, 2, 3, 4, 5, 6]),
         np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))
Run Code Online (Sandbox Code Playgroud)

但是这个:

interp1d(np.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6]),
     np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))
Run Code Online (Sandbox Code Playgroud)

返回:

ValueError:x_new中的值低于插值范围.

但是,这很好用.

interp1d(np.array([1.0, 2.2, 3.3, 4.4, 5.5, 6.6]),
         np.array([2, 4, 6, 8, 10, 12]), kind='cubic')(np.linspace(1, 6, num=40))
Run Code Online (Sandbox Code Playgroud)

python interpolation scipy

2
推荐指数
1
解决办法
5244
查看次数

标签 统计

interpolation ×1

python ×1

scipy ×1