我有一个列表:
sample_list = array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])
我想计算每4个元素的平均值。但不是单独计算每4个元素,而是计算前4个元素的平均值:
1,2,3,4
接下来是:
2,3,4,5
紧接着:
3,4,5,6
等等。
结果将是第一个列表中每4个元素之间的平均数的数组或列表。
输出:
array([2.5, 3.5, 4.5, ...])
My attempt:
sample_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
splits = 4
def avgerage_splits(data):
datasum = 0
count = 0
for num in data:
datasum += num
count += 1
if count == splits:
yield datasum / splits
datasum = count = 0
if count:
yield datasum / count
print(list(average_splits(sample_list)))
[1.5, 3.5, 5.5, 7.5, 9.5, 11.0]
这不是我需要的输出,因为它在移动到新的4个元素集之前计算每4个元素的平均值。我想要的是只将列表中的一个元素向上移动,并计算这4个元素的平均值,以此类推。
numpy.convolve
,我们也可以通过以下方式完成操作:new_list = np.convolve(sample_list, np.ones(4)/4, mode='valid')
。 - Gonçalo Peres