一维数据的插值运算可以通过方法
interp1d()
完成。
该方法接收两个参数 x 点和 y 点。
返回值是可调用函数,该函数可以用新的 x 调用并返回相应的 y,
y = f(x)
。
对给定的 xs 和 ys 插值,从 2.1、2.2... 到 2.9:
from
scipy.
interpolate
import
interp1d
import
numpy
as
np
xs
=
np.
arange
(
10
)
ys
=
2
*xs +
1
interp_func
=
interp1d
(
xs
,
ys
)
newarr
=
interp_func
(
np.
arange
(
2.1
,
3
,
0.1
)
)
print
(
newarr
)
输出结果为:
[5.2 5.4 5.6 5.8 6. 6.2 6.4 6.6 6.8]
注意:
新的 xs 应该与旧的 xs 处于相同的范围内,这意味着我们不能使用大于 10 或小于 0 的值调用 interp_func()。
单变量插值
在一维插值中,点是针对单个曲线拟合的,而在样条插值中,点是针对使用多项式分段定义的函数拟合的。
单变量插值使用 UnivariateSpline() 函数,该函数接受 xs 和 ys 并生成一个可调用函数,该函数可以用新的 xs 调用。
分段函数,就是对于自变量 x 的不同的取值范围,有着不同的解析式的函数。
为非线性点找到 2.1、2.2...2.9 的单变量样条插值:
from
scipy.
interpolate
import
UnivariateSpline
import
numpy
as
np
xs
=
np.
arange
(
10
)
ys
=
xs**
2
+ np.
sin
(
xs
)
+
1
interp_func
=
UnivariateSpline
(
xs
,
ys
)
newarr
=
interp_func
(
np.
arange
(
2.1
,
3
,
0.1
)
)
print
(
newarr
)
输出结果为:
[5.62826474 6.03987348 6.47131994 6.92265019 7.3939103 7.88514634
8.39640439 8.92773053 9.47917082]
径向基函数插值
径向基函数是对应于固定参考点定义的函数。
曲面插值里我们一般使用径向基函数插值。
Rbf() 函数接受 xs 和 ys 作为参数,并生成一个可调用函数,该函数可以用新的 xs 调用。
from
scipy.
interpolate
import
Rbf
import
numpy
as
np
xs
=
np.
arange
(
10
)
ys
=
xs**
2
+ np.
sin
(
xs
)
+
1
interp_func
=
Rbf
(
xs
,
ys
)
newarr
=
interp_func
(
np.
arange
(
2.1
,
3
,
0.1
)
)
print
(
newarr
)
输出结果为:
[6.25748981 6.62190817 7.00310702 7.40121814 7.8161443 8.24773402
8.69590519 9.16070828 9.64233874]