13

時系列 (unix タイムスタンプ) を含む numpy 配列が 2 つあります。差がしきい値内にあるタイムスタンプのペア(各配列から 1 つ)を見つけ
たいです。

これを実現するには、2 つの時系列データを 2 つの配列に配置して、各インデックスが最も近いペアを持つようにする必要があります。(配列内の2つのタイムスタンプが別の配列内の別のタイムスタンプに等しく近い場合、ペアの数が実際の値よりも重要であるため、どちらを選択してもかまいません。)

したがって、アラインされたデータ セットには、同じサイズの2 つの配列と、空のデータで埋められた小さい方の配列があります。

timeseriesパッケージとalign関数を使用することを考えていました。しかし、時系列である私のデータに整列を使用する方法がわかり
ません。

例では、2 つの時系列配列を考えます。

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で、これは 内にthresholdあり、最小であるためです。ts2[2]ts1[4] はすでにペアになっているので、他の計算から除外する必要があります。

そのようなペアが見つかるはずなので、出力配列は実際の配列よりも長くなる可能性があります

abs(ts1[0]-ts2[0]) = 16060
abs(ts1[0]-ts2[1]) = 15820 //ペア
abs(ts1[0]-ts2[2]) = 14212
abs(ts1[0 ]-ts2[3]) = 14273
abs(ts1[0]-ts2[4]) = 38444


abs(ts1[1]-ts2[0]) = 16121
abs(ts1[1]-ts2[1]) = 15881
abs(ts1[1]-ts2[2]) = 14151
abs(ts1[1]-ts2 [3]) = 14212
abs(ts1[1]-ts2[4]) = 38383


abs(ts1[2]-ts2[0]) = 17264
abs(ts1[2]-ts2[1]) = 17024
abs(ts1[2]-ts2[2]) = 13008
abs(ts1[2]-ts2 [3]) = 13069
abs(ts1[2]-ts2[4]) = 37240


abs(ts1[3]-ts2[0]) = 17384
abs(ts1[3]-ts2[1]) = 17144
abs(ts1[3]-ts2[2]) = 12888
abs(ts1[3]-ts2 [3]) = 17144
abs(ts1[3]-ts2[4]) = 37120


abs(ts1[4]-ts2[0]) = 24569
abs(ts1[4]-ts2[1]) = 24329
abs(ts1[4]-ts2[2]) = 5703 //ペア
abs( ts1[4] ]-ts2[3]) = 5764
abs(ts1[4]-ts2[4]) = 29935


abs(ts1[5]-ts2[0]) = 55794
abs(ts1[5]-ts2[1]) = 55554
abs(ts1[5]-ts2[2]) = 25522
abs(ts1[5]-ts2 [3]) = 25461
abs(ts1[5]-ts2[4]) = 1290 //ペア


abs(ts1[6]-ts2[0]) = 55853
abs(ts1[6]-ts2[1]) = 55613
abs(ts1[6]-ts2[2]) = 25581
abs(ts1[6]-ts2 [3]) = 25520
abs(ts1[6]-ts2[4]) = 1349


したがって、ペアは次のとおりです: ( ts1[0],ts2[1]), (ts1[4],ts2[2]), (ts1[5],ts2[4])
残りの要素はnullペアとして持つ必要があり
ます 最後の 2 つの配列のサイズは 9 になります。

この質問が明確かどうか教えてください。

4

6 に答える 6