如何找到和匹配Numpy数组中的模式?

问题描述 投票:0回答:1

我有一个包含零和一的大数组,array = [1 0 1 0 0 0 0 1 1 0 1 1]。如何找到数组中的匹配模式,例如0 0、0 1、1 0、1 1

python arrays design-patterns
1个回答
0
投票

您可以为此使用卷积,例如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,如果要处理大量数据,它可能会更快。

© www.soinside.com 2019 - 2024. All rights reserved.