我正在寻找一种在时间起点和终点之间进行简单的线性插值的方法,这两个数组具有相同的长度:
fst = np.random.random_integers(5, size=(10.))
>>> array([4, 4, 1, 3, 1, 4, 3, 2, 5, 2])
snd = np.random.random_integers(5, size=(10.))
>>> array([1, 1, 3, 4, 1, 5, 5, 5, 4, 3])
在我的起点和终点之间,有3个时间步骤。如何在 fst
和 snd
之间进行插值?举例来说,我想要能够获取 fst
和 snd
的第一个条目,并检索每个时间步骤的值,如下所示:
np.interp(1, [1,5], [4,1])
np.interp(2, [1,5], [4,1])
...
# that is
np.interp([1,2,3,4,5], [1,5], [4,1])
>>> array([ 4. , 3.25, 2.5 , 1.75, 1. ])
但不仅限于第一个条目,而是整个数组。
显然,这样做行不通:
np.interp(1, [1,5], [fst,snd])
好的,我知道我会进入一个循环,例如:
[np.interp(2, [1,5], [item,snd[idx]]) for idx,item in enumerate(fst)]
>>> [3.25, 3.25, 1.5, 3.25, 1.0, 4.25, 3.5, 2.75, 4.75, 2.25]
但我相信当您循环遍历NumPy数组时,您正在做一些根本错误的事情。