平均数组的每个n个元素,没有numpy

时间:2016-10-24 11:15:24

标签: python arrays average

我有一个数组。我想创建一个新数组,它是每三个元素的平均值。因此,新阵列将是原始阵列的三分之一。

举个例子:

 [1,2,3,1,2,3,1,2,3]

应该返回数组:

 [2,2,2]

有人能建议一种有效的方法吗?我想在没有using numpy的情况下这样做。

3 个答案:

答案 0 :(得分:1)

有什么问题?

a = [1,2,3,4,5,6,7,8,9]
def reduce_list(any_list, number_of_values_to_combine):
    ret_list = []
    for i in range(len(any_list)//number_of_values_to_combine):
        new_value = 0
        for j in range(number_of_values_to_combine):
            new_value += any_list[i*number_of_values_to_combine + j]
        ret_list.append(new_value/number_of_values_to_combine)
    return ret_list

print reduce_list(a,3)

休息将被忽略,如果有f.e. 7个元素组合为3,结果中将有2个元素

答案 1 :(得分:0)

l = [1,2,3,2,1,4,3,2,4,5,6,4,3,1,5]
n = 3
sub = [l[(n-1) + i*n] for i in range(int(len(l)/n))]
avg_every_third_element = sum(sub)/len(sub)

下次展示你的努力。如果没有,没有人可以帮助你改进你的方法。大多数问题(如你所见)都可以通过一点点研究来解决。

答案 2 :(得分:0)

a = [1,2,3,1,2,3,1,2,3]
array_result = []

for i in range(a):
    if i%3 == 0:
        new_number = (a[i]+a[i-1]+a[i-2])/3
        array_result.append(new_number)

这对我有用。