确定数组是否包含长度为 N 的连续元素序列

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

我正在尝试找到一种方法来检查数组是否具有如下数字序列:

[1,2,3,4,4,4,4,5,6,7]

这里不同,我不介意它们在哪里,只是有一个长度为N的重复(任意数量)。我可以用计数器和滑动窗口以迭代的方式做到这一点,但我无法弄清楚了解如何将其转换为 numpy 来对其进行矢量化。

python arrays numpy
1个回答
0
投票

如果您只关心数组中是否存在序列(而不是序列在哪里或是什么),那么您可以使用

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

这几乎就是链接问题中这个答案中所建议的内容。

编辑:实际上,这个答案几乎相同(也许应该将其作为重复项关闭?)。

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