在 python 中重新组合数组,使每个条目至少有 N 个计数

问题描述 投票:0回答:1

我有一个数组:

A = [1,8,2,6,4,8,1,0,1,6,7,3,1,4,9,1,2,1,2,1,1,2]

并且我想将其重新组合/分组为更小的数组,每个条目中至少有一个值

10
,即:

A_reb = [[1,8,2],[6,4],[8,1,0,1],[6,7],[3,1,4,9],[1,2,1,2,1,1,2]]
A_reb = [11, 10, 10, 13, 17, 10]

有没有一种有效的方法可以在Python中做到这一点?预先感谢。

python arrays bin group
1个回答
0
投票

试试这个:

def rebin_array(arr):
    rebinned = []
    current_group = []
    current_sum = 0
    
    for num in arr:
        if current_sum + num <= 10:
            current_group.append(num)
            current_sum += num
        else:
            rebinned.append(current_group)
            current_group = [num]
            current_sum = num
    
    if current_group:
        rebinned.append(current_group)
    
    return rebinned

A = [1,8,2,6,4,8,1,0,1,6,7,3,1,4,9,1,2,1,2,1,1,2]
A_rebinned = rebin_array(A)
A_rebinned_sum = [sum(group) for group in A_rebinned]

print("A_rebinned:", A_rebinned)
print("A_rebinned_sum:", A_rebinned_sum)
© www.soinside.com 2019 - 2024. All rights reserved.