我有一个数组。我想创建一个新数组,它是每三个元素的平均值。因此,新阵列将是原始阵列的三分之一。
举个例子:
[1,2,3,1,2,3,1,2,3]
应该返回数组:
[2,2,2]
有人能建议一种有效的方法吗?我想在没有using numpy的情况下这样做。
答案 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)
这对我有用。