从数组中提取单独的非零块

Meh*_*hdi 4 python numpy extract

像这样的数组,例如:

[1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1]
Run Code Online (Sandbox Code Playgroud)

Python中最快的方法是在列表中组织非零元素,其中每个元素包含连续非零值块的索引?

这里的结果将是一个包含许多数组的列表:

([0, 1, 2, 3], [9, 10, 11], [14, 15], [20, 21])
Run Code Online (Sandbox Code Playgroud)

ovg*_*vin 8

>>> L = [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1]
>>> import itertools
>>> import operator
>>> [[i for i,value in it] for key,it in itertools.groupby(enumerate(L), key=operator.itemgetter(1)) if key != 0]

[[0, 1, 2, 3], [9, 10, 11], [14, 15], [20, 21]]
Run Code Online (Sandbox Code Playgroud)