找到最长连续数字序列的长度

sia*_*mii 10 python numpy

我有一个像这样的numpy数组[1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1]我想找到最长的连续系列的长度为1s或-1s.在示例中,它应该是3

Joh*_*ooy 17

在纯Python中

>>> from itertools import groupby
>>> L = [1,1,1,-1,-1,1,-1,1,1,-1,-1,-1,1,-1]
>>> max(sum(1 for i in g) for k,g in groupby(L))
3
Run Code Online (Sandbox Code Playgroud)

  • @jszakmeister,任何时候问题都包含"连续"这个词,`groupby()`应该是你的第一件事 (5认同)
  • 不能比这更简单.+1 (2认同)

jam*_*lak 6

类似于@AlexMartelli的回答

>>> import numpy as np
>>> nums = np.array([1,1,1,-1-1,1,-1,1,1,-1,-1,-1,1,-1])
>>> run_ends = np.where(np.diff(nums))[0] + 1
>>> np.diff(np.hstack((0, run_ends, nums.size))).max()
3
Run Code Online (Sandbox Code Playgroud)