我有一个包含零和一的大数组,array = [1 0 1 0 0 0 0 1 1 0 1 1]
。如何找到数组中的匹配模式,例如0 0、0 1、1 0、1 1
您可以为此使用卷积,例如numpy.convolve
:
numpy.convolve
结果越高,匹配越好。在您的情况下,该值应等于您的模式中的个数,并且可以使用import numpy as np
data = np.array([1, 0, 1, 0, 0, 0, 0 ,1, 1, 0, 1, 1])
kernel = np.array([0, 0, 0, 1, 1, 0, 1, 1])
res = np.convolve(data,kernel, 'full')
print(res)
# >>> [0 0 0 1 1 1 2 1 1 1 1 2 1 2 4 2 1 2 1]
res = np.convolve(data,kernel, 'same')
print(res)
# >>> [1 1 1 2 1 1 1 1 2 1 2 4]
res = np.convolve(data,kernel, 'valid')
print(res)
# >>> [1 1 1 1 2]
找到该索引。
查看关键字np.argmax()
(完整,相同,有效),然后选择最适合您的情况。
还有mode
,如果要处理大量数据,它可能会更快。