2011-12-28 2 views
3

У меня есть модуль, который собирает статистику в непоследовательный временной интервал. К сожалению, чтобы использовать его в графике, мне нужны значения x, интерполированные на согласованный интервал.Интерполяция периодических данных в Python

Учитывая следующее: x, y пары, что является самым питоническим способом для этого?

(1, 23), (2, 42), (3.5, 89), (5, 73), (7, 54), (8, 41), (8.5, 37), (9, 23) 
+0

что ваш ожидаемый результат? – juliomalegria

+1

'y = mx + c'. Вы можете «нормализовать» любую строку, сначала линеаризуя ее. Затем, поскольку это прямая линия, легко перемещаться по этой линии к правильному значению x/y, которое вам нужно по линии. – Ben

ответ

7

Использование numpy.interp:

import numpy as np 

a = np.array([(1, 23), (2, 42), (3.5, 89), (5, 73), (7, 54), (8, 41), (8.5, 37), (9, 23)]) 

x = np.arange(1, 10) # target x values 

b = zip(x, np.interp(x, a[:,0], a[:,1])) 

# b == [(1, 23.0), 
#  (2, 42.0), 
#  (3, 73.333333333333329), 
#  (4, 83.666666666666671), 
#  (5, 73.0), 
#  (6, 63.5), 
#  (7, 54.0), 
#  (8, 41.0), 
#  (9, 23.0)] 
Смежные вопросы