Я ищу способ сделать простую линейную интерполяцию между двумя массивами numpy
, которые представляют собой начало и конечную точку во времени.numpy: как интерполировать между двумя массивами для разных временных меток?
два массива имеют одинаковую длину:
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]
но я верю, что когда вы перебираете многочисленные массивы, вы делаете что-то принципиально неправильно.