Ich bin auf der Suche nach einer einfachen linearen Interpolation zwischen zwei numpy
Arrays, die einen Start und einen Endpunkt in der Zeit darstellen.numpy: Wie interpoliert man zwischen zwei Arrays für verschiedene Zeitschritte?
Die beiden Arrays die gleiche Länge:
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])
Zwischen meinem Start- und Endpunkt gibt es 3 Zeitschritte. Wie kann ich zwischen und snd
interpolieren? Ich möchte in der Lage sein, den ersten Eintrag von fst
und snd
als Beispiel genommen wird, den Wert jeder Zeitschritt wie
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. ])
aber als nicht nur für den ersten Eintrag abzurufen, sondern über das gesamte Array.
Offensichtlich ist dies wird es nicht tun:
np.interp(1, [1,5], [fst,snd])
Nun, ich weiß, dass ich bekommen es in einer Schleife, z.B.
[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]
Aber ich glaube, wenn Sie über numpy Arrays stolpern, tun Sie etwas grundlegend falsch.