我有两个包含时间序列(unix 时间戳)的 numpy 数组。
我想找到差异在阈值内的时间戳对(每个数组中的 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
,它在 之内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
绝对值(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
绝对值(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
绝对值(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
绝对值(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
绝对值(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
绝对值(ts1[6]-ts2[4]) = 1349
所以这些对是: ( ts1[0],ts2[1]), (ts1[4],ts2[2]), (ts1[5],ts2[4]
)
其余元素应该null
作为它们的对
最后两个数组的大小为 9。
请让我知道这个问题是否清楚。