我有一个随时间变化的速度列表。有没有办法在该列表(时间)的大小上插入该数据?为了更清楚,这里有一个简单的代码:
import numpy as np
v_list = []
v_time1 = [[1,1], [2,2]] #2D
v_time2 = [[0,1], [3,4]] #2D
v_list.append(v_time1,v_time2)
time = np.size(v_list) #1D
我的目标是随时间插入v_list中包含的数据,以便我可以根据所需的时间"调用"它。像这样:
v_desired_time = interpolated_velocities(desired_time) #2D
干杯!
您可以使用
scipy.interpolate.interp1d
. 它可以处理作为数组的函数的值。
例如
In [35]: from scipy.interpolate import interp1d
以下是您的测量值。 我将它们放入一个名为 v
的 numpy 数组中:
In [36]: v_time1 = [[1,1], [2,2]] #2D
In [37]: v_time2 = [[0,1], [3,4]] #2D
In [38]: v = np.array([v_time1, v_time2])
In [39]: v
Out[39]:
array([[[1, 1],
[2, 2]],
[[0, 1],
[3, 4]]])
t
保存时间值:
In [40]: t = np.arange(v.shape[0])
In [41]: t
Out[41]: array([0, 1])
创建插值器。 默认情况下,它使用线性插值:
In [42]: f = interp1d(t, v, axis=0)
在几个时间值处检查插值器的值:
In [43]: f(0)
Out[43]:
array([[ 1., 1.],
[ 2., 2.]])
In [44]: f(0.5)
Out[44]:
array([[ 0.5, 1. ],
[ 2.5, 3. ]])
In [45]: f(1)
Out[45]:
array([[ 0., 1.],
[ 3., 4.]])