numpy 将非连续整数数组拆分为连续整数数组

htrmnn0y  于 2023-04-21  发布在  其他
关注(0)|答案(2)|浏览(155)

我在python中有一个数组,里面有几百个元素,我想分区。让我们以下面的数组为例:[1,2,3,7,8,9,10,11,14],我想分成以下数组:[1,2,3],[7,8,9,10,11],[14],这个想法是在每个数组中的数字是连续的。有没有一种优雅的方法来做到这一点?
我还没有尝试过任何东西,我可以写一个for循环。

nue99wik

nue99wik1#

from more_itertools import consecutive_groups

a = [1,2,3,7,8,9,10,11,14]

print(*map(list, consecutive_groups(a)))
ie3xauqp

ie3xauqp2#

你可以使用itertools中的groupby来根据数字和它们的位置之间的差异来分组。连续的数字将具有相同的差异,因此它们将最终在相同的组中。

from itertools import groupby

a = [1,2,3,7,8,9,10,11,14]

group = (n-i for i,n in enumerate(a))
b     = [g for _,(*g,) in groupby(a,lambda _:next(group))]    

print(b)
[[1, 2, 3], [7, 8, 9, 10, 11], [14]]

相关问题