将动态数字数组重新定义为固定大小

时间:2014-02-26 13:52:00

标签: python arrays

我正在处理一个小型项目,我要生成线性图并说例如我需要有10个点,但数据可以是1000个点的数组。 / p>

[1,5,3,5,6,33,9,1,12,4,2]

考虑上面的整数数组(11个值),我想将其重新整形为一个包含3个值的数组,同时将最终结果的值相加,如下所示:

[14,49,18] (4 values + 4 values + 3 values)

在没有任何外部库的情况下,在python中使用能够处理任何大小(至少大于重构大小)的函数最好的方法是什么?

2 个答案:

答案 0 :(得分:7)

你想要这样的东西:

a = [1, 5, 3, 5, 6, 33, 9, 1, 12, 4, 2]
step = 4
print [sum(a[i:i + step]) for i in range(0, len(a), step)]

输出

[14, 49, 18]

答案 1 :(得分:3)

受到itertools docs

grouper食谱的启发
data = [1,5,3,5,6,33,9,1,12,4,2]
from itertools import izip_longest
print map(sum, izip_longest(*[iter(data)] * 4, fillvalue = 0))
# [14, 49, 18]