我正在尝试找到一种方法来检查数组是否具有如下数字序列:
[1,2,3,4,4,4,4,5,6,7]
与这里不同,我不介意它们在哪里,只是有一个长度为N的重复(任意数量)。我可以用计数器和滑动窗口以迭代的方式做到这一点,但我无法弄清楚了解如何将其转换为 numpy 来对其进行矢量化。
如果您只关心数组中是否存在序列(而不是序列在哪里或是什么),那么您可以使用
np.diff
,检查它们中是否有一个为1(意味着两个相邻的序列)值相差 1,因此是连续的),然后使用 .any()
查看是否有 1。
import numpy as np
a = np.array([1,2,3,4,4,4,4,5,6,7])
has_consecutive = (np.diff(a) == 1).any() # True
b = np.array([1,6,1,3,5,8,3,7,2,2])
has_consecutive = (np.diff(b) == 1).any() # False
这几乎就是链接问题中这个答案中所建议的内容。
编辑:实际上,这个答案几乎相同(也许应该将其作为重复项关闭?)。