根据浮动条目的大小拆分列表

时间:2016-09-30 14:18:40

标签: python

我有一个浮点列表,其中每个连续索引的大小可以变化。 即。

float_list = [167.233, 95.6242, 181.367, 20.6354, 147.505, 41.9396, 20.3126]

我想要做的是根据索引中浮动的大小来拆分列表。特别是,如果一个指数的浮点数小于之前指数的浮点数,则将指数组合在一起以返回小于之前指数的指数总数。

例如,如果我们从第一个索引开始,则值为167.233。因为下一个索引95.6242的值小于前一个索引的值,我想将这两个值组合在一起以返回它们的长度,即2。

第三个指数大于第二个指数,因此这成为新的基准'。由于以下索引小于第三个索引,因此返回长度2。 第五个指标是下一个基准'并且其余指数的浮点数减少,因此返回这些指数的长度3。

我希望这种方式返回的方式是这些指数的长度清单,即[2,2,3]

如果这令人困惑,请提前道歉,很难用语言解释。

3 个答案:

答案 0 :(得分:2)

使用numpy.diffnumpy.where来查找项目未被排序的索引,然后使用numpy.split()在该索引中拆分数组,最后使用{{1}找到分裂数组的长度:

map()

答案 1 :(得分:0)

你也可以这样做:

def group_list(l):
    if not l:
        return []

    result = [0]
    prev = l[0] + .1
    for el in l:
        if el < prev:
            result[-1] += 1
        else:
            result.append(1)
        prev = el

    return result

>>> group_list([167.233, 95.6242, 181.367, 20.6354, 147.505, 41.9396, 20.3126])
[2, 2, 3]
>>> group_list([167.233, 95.6242, 1.367, 20.6354, 147.505, 41.9396, 20.3126])
[3, 1, 3]
>>> group_list([167.233, 95.6242, 1.367, 20.6354, 147.505, 41.9396, 70.3126])
[3, 1, 2, 1]
>>> group_list([-167.233, 95.6242, 1.367, 20.6354, 147.505, 41.9396, 70.3126])
[1, 2, 1, 2, 1]

答案 2 :(得分:0)

您似乎想要获取一个列表,其中包含浮动列表中递减/不增加范围的大小。

$('.newwidget').removeClass().addClass('newerwidget');