Python在维护list structu的同时将数组拆分为正数和负数

2024-05-15 03:52:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了这样一个问题,在保持列表结构的同时,我必须拆分一个负数和正数的列表。在

Zeros are considered positive

示例:

输入数据

[1,  1,  1, -2, -2, -2,  1,  1,  1, -2, -2, -2,  1,  1,  1]

输出数据

^{pr2}$

有谁能给我一个好的方向,这是解决这个问题的好办法吗?在

我曾经研究过np.split和条件相关的切片,但也没有找到合适的方法。在


Tags: 数据示例列表npzeros方向结构are
2条回答

如果没有进一步的研究,我将使用标准库中的itertools.groupby。也许还有更好的解决办法。在

import itertools
vals = [1,  1,  1, -2, -2, -2,  1,  1,  1, -2, -2, -2,  1,  1,  1]
splitted = [list(g) for i, g in itertools.groupby(vals,lambda x: x<0)]

如注释中所述,您必须选择如何处理0,并相应地调整lambda。在

您可以使用熊猫:

import pandas as pd
l = [1,  1,  1, -2, -2, -2,  1,  1,  1, -2, -2, -2,  1,  1,  1]
s = pd.Series(l)
s.groupby(s.diff().ne(0).cumsum()).agg(list).tolist()

输出:

^{pr2}$

另一个使用numpy的解决方案:

np.split(l, np.diff(l).nonzero()[0]+1)

输出:

[array([1, 1, 1]),
 array([-2, -2, -2]),
 array([1, 1, 1]),
 array([-2, -2, -2]),
 array([1, 1, 1])]

相关问题 更多 >

    热门问题