Pythonでリストの平均を求める方法は、すべて同じ型であれば、たくさんあります。
この記事では、Pythonのリストの平均要素を求める方法のいくつかを見ていきます。
さっそく始めてみましょう
方法1: reduce() を使って Python でリストの平均を求める
reduce()メソッドとラムダ関数(このように)を使用します。
平均 = (全要素の合計) / (要素数) なので、ラムダ関数を使って要素を合計し、その結果をリストの長さで割ることになります。
ということで、対応する式は
average = ( reduce ( lambda x, y: x + y, input_list)) / len (input_list)
|
では、実際に例を挙げて説明しよう。
from functools import reduce
input_list = [ 3 , 2 , 1 , 5 , 7 , 8 ]
average = ( reduce ( lambda x, y: x + y, input_list)) / len (input_list)
print ( "Average of List:" , average)
|
結果は以下の通りです。
Average of List: 4.333333333333333 |
平均は (3 + 2 + 1 + 5 + 7 + 8) / 6 = 26 / 6 = 4.333 であるから、これは確かに正しい出力です。
異なる型の要素を渡すことはできません。
なぜなら、+
オペランドが機能しない可能性があるからです。
ですから、これが動作するためには、リストのすべての要素が +
オペランドと型互換でなければなりません。
これはPythonでリストの平均を求める方法の1つです。
この記事もチェック:Pythonのsample関数を使ってリストからランダムに要素を抽出する方法
方法2: sum() メソッドを使う (推奨)
reduce()メソッドを使う代わりに、sum(list)
を使って直接合計を求め、それを長さで割ることができます。
input_list = [ 3 , 2 , 1 , 5 , 7 , 8 ]
average = sum (input_list) / len (input_list)
print ( "Average of List:" , average)
|
先ほどと同じ出力が得られます!
Pythonでリストの平均を求めるには、この方法がおすすめです。
ビルトイン関数しか使わないので、とても簡単です。
方法3:statistics.mean()を使う
Pythonのバージョンが3.4以上の場合、Pythonのリストの平均を求めるために statistics
モジュールを使うこともできます。
import statistics
input_list = [ 3 , 2 , 1 , 5 , 7 , 8 ]
average = statistics.mean(input_list)
print ( "Average of List:" , average)
|
方法4: numpy.mean()を使用する
NumPyベースのメソッドを使いたい場合は、numpy.mean()
が代わりにやってくれるでしょう。
import numpy as np input_list = [3, 2, 1, 5, 7, 8] average = np.mean(input_list) print("Average of List:", average) |
また、リストをnumpyの配列に変換し、ndarray.mean
で平均値を取得することもできます。
あなたのユースケースに適した方を使用することができますが、両者はほぼ同じパフォーマンスです。
import numpy as np input_list = [3, 2, 1, 5, 7, 8] # Convert to a numpy ndarray and get the mean # using ndarray.mean average = np.array(input_list).mean print("Average of List:", average) |
この記事もチェック:Pythonのmaxメソッドを使ってリストや配列の最大値を求める方法
方法5: pandasを使用する Series.mean()
もし Pandas
を使っているなら、 pandas.Series(list).mean()
を使ってリストの平均を取得することができます。
import pandas as pd
input_list = [ 3 , 2 , 1 , 5 , 7 , 8 ]
# Convert the list to a Pandas Series using pd.Series(list) # and then get it's mean using series.mean() average = pd.Series(input_list).mean()
print ( "Average of List:" , average)
|
結果は以下の通りです。
Average of List: 4.333333333333333 |
まとめ
今回は、Pythonでリストの平均を求める方法を、様々なアプローチで学びました。