2016-10-24 5 views
-3

配列があります。私はすべての3番目の要素の平均である新しい配列を作成したい。したがって、新しいアレイは元のサイズの3分の1になります。一例として、numpyのない配列のn要素ごとに平均化する

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

が配列を返す必要があります:

[2,2,2] 

誰もがこれを行うための効率的な方法を提案することはできますか?私はusing numpyなしでこれをやりたい

+5

試しましたか? – Hackaholic

+0

@Hackaholicあまりありません。 – Meysam

+1

itertoolsのドキュメントでグルーパーのレシピを見てください:https://docs.python.org/2/library/itertools.html#recipes – Rob

答えて

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つの要素があります

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) 

次回はあなたの努力を示しています。あなたのアプローチが改善されていなければ、誰もあなたのアプローチを改善するのを手助けすることはできません。そして、ほとんどの質問は(あなたのところでは)少しのビットで解決することができます研究。

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) 

これは私のために働いています。

関連する問題