2017-06-20 21 views
1

2つ以上のリストや辞書の値の平均を計算する方法はありますか?整数リストと辞書の平均値

lista = [1, 2, 3, 4, 5] 
listb = [5, 4, 3, 2, 1] 

listavg = [0]*5 
count = 0 
for i in lista: 
    listavg[count] = (i + listb[count])/2 
    count += 1 

print(listavg) 

[3.0, 3.0, 3.0, 3.0, 3.0] 

しかし、私は100件のリストが何を持っている場合:

これは私が思い付いたのですか?これらのリストが次のような辞書の中にある場合はどうでしょうか?

{'A': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'B': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'C': [2, 2, 2, 2, 2, 2, 2, 2, 2, 2], 'D': [3, 3, 3, 3, 3, 3, 3, 3, 3, 3], 'E': [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], 'F': [5, 5, 5, 5, 5, 5, 5, 5, 5, 5], 'G': [6, 6, 6, 6, 6, 6, 6, 6, 6, 6], 'H': [7, 7, 7, 7, 7, 7, 7, 7, 7, 7], 'I': [8, 8, 8, 8, 8, 8, 8, 8, 8, 8], 'J': [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]} 

P.S.リストの長さは常に同じです。


EDIT:重要な点は、リストの平均ではなく、各インデックスの平均を求めることです。

+0

おそらく、あなたは#[statistics.mean](https://docs.python.org/3/library/statistics.html)関数 – Pikaurd

答えて

4

使用zipとリスト内包:

>>> [sum(l)/len(l) for l in zip(*list_dict.values())] 
[4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5] 
+0

を使って列長ベクトルのタプルリストを作ることができます私の問題のために:D。 ありがとうございます。 – Aminoff

1

あなたが入力リストからインデックスごとのグループにまとめ、各要素のタプルを取得するためにzip()を使用して、それらを一緒に追加するsum()を使用することができます。

>>> def averages(*lists): 
    return [sum(els)/len(els) for els in zip(*lists)] 

>>> averages([1, 2, 3, 4, 5], [5, 4, 3, 2, 1]) 
[3.0, 3.0, 3.0, 3.0, 3.0] 
>>> 
0
lista = [1, 2, 3, 4] 
listb = [5, 6, 7, 8, 9] 
lists = lista + listb 
average = sum(lists)/len(lists) 

これはうまくいくと思います。

+0

私はあなたが私の問題を誤解しているかもしれないと思います。 – Aminoff

+0

私はあなたの質問の含意を確信していませんでした。使用したコードと希望する出力の両方を私に教えてください。これは私をはじめ、他の人たちがあなたを助けるのに役立ちます。 –

+0

私はすでに@RawingとChristian Deanのおかげで解決策を見つけました。私が望んでいたのは、2つのリストのインデックスを比較する平均値を得ることでした。私が探していたものの出力例を挙げました。 – Aminoff

関連する問題