在一个Numpy数组中查找模式


问题内容

我试图在中找到样式numpy
array,称为values。我想返回模式的起始索引位置。我知道我可以遍历每个元素并检查该元素和下一个元素是否与模式匹配,但是要遍历一个效率极低且正在寻找更好替代方法的大型数据集。

我有一个np.where用于搜索单个值的有效解决方案,但是我无法通过查找一个或两个数字来使用它。

例:

import numpy as np
values = np.array([0,1,2,1,2,4,5,6,1,2,1])
searchval = [1,2]
print  np.where(values == searchval)[0]

输出:

[]

预期产量:

[1, 3, 8]

问题答案:

您不能简单地使用np.where(假设这是查找元素的最佳方法),然后仅检查满足第一个条件的图案。

import numpy as np
values = np.array([0,1,2,1,2,4,5,6,1,2,1])
searchval = [1,2]
N = len(searchval)
possibles = np.where(values == searchval[0])[0]

solns = []
for p in possibles:
    check = values[p:p+N]
    if np.all(check == searchval):
        solns.append(p)

print(solns)