У меня есть два пустых массива, содержащих временные ряды (временные метки unix).
Я хочу найти пары меток времени(по 1 из каждого массива), разницакоторых находится в пределах порога.
Для этого мне нужно выровнять два данных временных рядов в два массива так, чтобы у каждого индекса была ближайшая пара. (В случае двух временных меток в массивах, одинаково близких к другой временной метке в другом массиве, я не возражаю против выбора любой из них, поскольку количество пар важнее, чем фактические значения.)
Таким образом, выровненный набор данных будет иметь двамассива одинакового размераплюс меньший массив, заполняемый пустыми данными .
Я думал об использовании пакета timeseries
и функции align
.
Но я не уверен , как использовать выравнивание для моих данных, которые представляют собой временные ряды.
Пример рассмотрим два массива временных рядов:
ts1=np.array([ 1311242821.0, 1311242882.0, 1311244025.0, 1311244145.0, 1311251330.0,
1311282555.0, 1311282614.0])
ts2=np.array([ 1311226761.0, 1311227001.0, 1311257033.0, 1311257094.0, 1311281265.0])
Выходной образец:
Теперь для ts2[2] (1311257033.0)
его ближайшая пара должна быть ts1[4] (1311251330.0)
, потому что разница составляет 5703,0
, что находится в пределах порога
и является наименьшим. Теперь, когда ts2[2]
и ts1[4]
уже спарены, их следует исключить из других вычислений.
Такие пары должны быть найдены, поэтому выходной массив может быть длиннее, чем фактические массивы
abs(ts1[0]-ts2[0]) = 16060
abs(ts1[0]- ts2[1]) = 15820//пара
абс (ts1[0]-ts2[2]) = 14212
абс (ts1[0]-ts2[3]) = 14273
абс(ts1[0]-ts2[4]) = 38444
абс(ts1[1]-ts2[0]) = 16121
абс (ts1[1]-ts2[1]) = 15881
абс (ts1[1]-ts2[2]) = 14151
абс (ts1[1]-ts2[3]) = 14212
абс(ts1[1]-ts2[4]) = 38383
абс(ts1[2]-ts2[0]) = 17264
абс (ts1[2]-ts2[1]) = 17024
абс (ts1[2]-ts2[2]) = 13008
абс (ts1[2]-ts2[3]) = 13069
абс(ts1[2]-ts2[4]) = 37240
абс(ts1[3]-ts2[0]) = 17384
абс (ts1[3]-ts2[1]) = 17144
абс (ts1[3]-ts2[2]) = 12888
абс (ts1[3]-ts2[3]) = 17144
абс(ts1[3]-ts2[4]) = 37120
абс(ts1[4]-ts2[0]) = 24569
abs(ts1[4]-ts2[1]) = 24329
abs(ts1[4]-ts2[2]) = 5703// пара
абс (ts1[4]-ts2[3]) = 5764
абс(ts1[4]-ts2[4]) = 29935
абс(ts1[5]-ts2[0]) = 55794
абс (ts1[5]-ts2[1]) = 55554
абс (ts1[5]-ts2[2]) = 25522
abs(ts1[5]-ts2[3]) = 25461
abs(ts1[5]-ts2[4]) = 1290// пара
abs(ts1[6]-ts2[0 ]) = 55853
абс (ts1[6]-ts2[1]) = 55613
абс (ts1[6]-ts2[2]) = 25581
абс (ts1[6]-ts2[3]) = 25520
abs(ts1[6]-ts2[4]) = 1349
Итак, пары: (ts1[0],ts2[1]), (ts1[4],ts2[2]), ( ts1[5],ts2[4]
)
Остальные элементы должны иметь null
в качестве пары
Последние два массива будут иметь размер 9.
Пожалуйста, дайте мне знать, если этот вопрос ясен.