Cir*_*red 2 python interpolation scipy
我正在尝试使用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)
inter1d返回一个允许您在数据域内插值的函数.当你使用
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)
数据的域是间隔[1.1, 6.6],最小值到最大值x-values.
因为1在np.linspace(1, 6, num=40)1和1位于外面[1.1, 6.6],所以interp1d加注
ValueError: A value in x_new is below the interpolation range.
Run Code Online (Sandbox Code Playgroud)
当您尝试在数据处插入数据时x-values np.linspace(1, 6, num=40).
当您x-values将数据更改为
np.array([1.0, 2.2, 3.3, 4.4, 5.5, 6.6])
Run Code Online (Sandbox Code Playgroud)
然后将数据域扩展为[1.0, 6.6],现在包括1.因此,插值np.linspace(1, 6, num=40)现在可行.
| 归档时间: |
|
| 查看次数: |
5244 次 |
| 最近记录: |