【python3】リストをフィルタしてから平均を求める:filter()+lambda+statistics.mean()

結論

from statistics import mean

sampleArr = [1,10,100,1000]
filterdList = list(filter(lambda x: x < 500, sampleArr))
ave = mean(sampleArr)
# 出力は 37

やりたいこと

与えられたリストの中から、「外れ値を消した上で」平均を求めたいんじゃよ。

外れ値を消すためにfilter()+lambda

filter(関数,リスト)を使うと、リストの中身を一つずつ関数に渡して、trueが返ってきた要素だけのリストを出力してくれる。(python3ではオブジェクトが返ってくるので、オブジェクトをlist()に突っ込んでリストを得る)

関数は別に定義しておいてもいいけど、簡単な条件ならlambda式を使うと一行で書ける。

sampleArr = [1,10,100,1000]
filterdList = list(filter(lambda x: x < 500, sampleArr))
# 出力は[1,10,100]

平均を一発で求めるstatistics.mean()

statisticsはpythonの標準モジュールなのでインストールは不要。importだけして使う。

from statistics import mean
# import statistics して、statistics.mean()で使っても。

sampleArr = [1,10,100,1000]
ave = mean(sampleArr)
# 出力は 277.75

参考サイト

Python3におけるmap/filterの使い方

【Python】filter()関数とlambdaでリストから特定の要素を抽出する – サンプルコード付

Pythonで平均、中央値、最頻値、分散、標準偏差を算出

この記事が気に入ったらサポートをしてみませんか?