我有一个浮点列表,其中每个连续索引的大小可以变化。 即。
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]
如果这令人困惑,请提前道歉,很难用语言解释。
答案 0 :(得分:2)
使用numpy.diff
和numpy.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');