gpt4 book ai didi

python - Numpy - 将数据分组为总和值

转载 作者:太空狗 更新时间:2023-10-30 01:29:25 25 4
gpt4 key购买 nike

假设我有一组值:

a = np.array([1,5,4,2,4,3,1,2,4])

和三个“总和”值:

b = 10
c = 9
d = 7

有没有一种方法可以将 a 中的值分组到集合中,这些集合的值组合起来等于 b、c 和 d?例如:

b: [5,2,3]
c: [4,4,1]
d: [4,2,1]

b: [5,4,1]
c: [2,4,3]
d: [4,2,1]

b: [4,2,4]
c: [5,4]
d: [1,1,2,3]

请注意 bcd 的总和应保持不变 (==26)。也许这个操作已经有了名字?

最佳答案

这是使用 itertools 的简单实现

from itertools import chain, combinations

def group(n, iterable):
s = list(iterable)
return [c for c in chain.from_iterable(combinations(s, r)
for r in range(len(s)+1))
if sum(c) == n]

group(5, range(5))

产量

[(1, 4), (2, 3), (0, 1, 4), (0, 2, 3)]

请注意,对于大型列表,这可能会非常慢,因为我们实际上是在构建和过滤该列表的幂集。


你可以用它来

sum_vals = [10, 9, 7]
a = [1, 5, 4, 2, 4, 3, 1, 2, 4]

map(lambda x: group(x, a), sum_vals)

然后将它们压缩在一起。

关于python - Numpy - 将数据分组为总和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19139994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com