【发布时间】:2014-07-17 12:54:24
【问题描述】:
我有一个大型数组y 定义在一个非均匀有序网格x 上。数组的长度通常为 N~2^14 到 N~2^18。我想获得数组的样条插值(或二次)。我面临的问题是,即使 N 的值较低,插值也需要很长时间。
import numpy as np
from scipy.interpolate import interp1d
N = 2 ** 12 # = 4096
x = np.linspace(0, 2*np.pi, N)
y = np.sin(x)
%time f = interp1d(x, y, 'cubic', )
CPU times: user 8min 5s, sys: 1.39 s, total: 8min 7s
Wall time: 8min 7s
我看到的一个选项是,我只需要非常有限的一组数据点的插值值。 有没有办法只在被要求时计算插值?
您能否提出一个替代方案,该替代方案还具有对低于x.min() 和高于x.max() 的值进行外推的功能?
谢谢!
【问题讨论】:
-
InterpolatedUnivariateSpline怎么样?
标签: python numpy scipy interpolation