长np.arrays中切割序列子序列的高效定位(含反转与噪声)
序列匹配问题:从长序列中定位混合子序列的位置
我有两个大型数值np.array(记为S1和S2),满足len(S1)>>len(S2)>>N(N为极大数)。S1称为原始序列,S2称为切割序列——由S1的多个不同子序列构成,这些子序列通常按时间顺序排列,但可能存在顺序反转,还会因噪声导致无法精确匹配。
示例如下:
S1 = [1,12,5,2,4,6,124,5,23,65,75,12,56243,21,54] # 原始序列 S2a = [1,12,5, 124,5, 75,12,56243] # 按时间顺序的切割序列 S2b = [1,12,5, 75,12,56243, 124,5] # 存在子序列反转的切割序列 S2c = [0.995,12,5.01, 124.1,5.5, 75.2,12,56242] # 带噪声的时间顺序切割序列
我需要高效找到S2中的每个子序列在原始序列S1中的位置,期望输出如下:
# 期望输出 S2a = [0:2, 6:7, 10:12] # 按时间顺序匹配结果 S2b = [0:2, 10:12, 6:7] # 子序列反转后的匹配结果 S2c = [0:2, 6:7, 10:12] # 带噪声的匹配结果
这是我此前问题的后续,复杂度有所提升。我猜测可能涉及互相关算法,但难点在于S2由多个子序列混合构成。我曾尝试构建分类器检测序列分割,但样本获取成本过高,现寻求更可行的方案。
内容的提问来源于stack exchange,提问作者David Harar
相关产品推荐
相关产品推荐

