これらの列の平均を計算するにはどうすればよいですか(Linux)??
sda 2.91 20.44 6.13 2.95 217.53 186.67 44.55 0.84 92.97
sda 0.00 0.00 2.00 0.00 80.00 0.00 40.00 0.22 110.00
sda 0.00 0.00 2.00 0.00 144.00 0.00 72.00 0.71 100.00
sda 0.00 64.00 0.00 1.00 0.00 8.00 8.00 2.63 10.00
sda 0.00 1.84 0.31 1.38 22.09 104.29 74.91 3.39 2291.82
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
例:mean(column 2)
Awk:
awk '{ total += $2 } END { print total/NR }' yourFile.whatever
読む:
Perlソリューション:
Perl -lane '$total += $F[1]; END{print $total/$.}' file
-a
行を@F配列に自動分割します。これは0から始まるインデックスが付けられています$.
は行番号です
フィールドが空白ではなくカンマで区切られている場合:
Perl -F, -lane '$total += $F[1]; END{print $total/$.}' file
すべての列の平均値を出力するには、合計を配列@tに割り当てます。
Perl -lane 'for $c (0..$#F){$t[$c] += $F[$c]}; END{for $c (0..$#t){print $t[$c]/$.}}'
出力:
0
0.485
14.38
1.74
0.888333333333333
77.27
49.8266666666667
39.91
1.29833333333333
434.131666666667
pythonを使用できます。これはLinuxで使用できます。
それがファイルからのものである場合、これを見てください question 、代わりにfloatを使用してください。
例えば:
#mean.py
def main():
with open("mean.txt", 'r') as f:
data = [map(float, line.split()) for line in f]
columnTwo = []
for row in data:
columnTwo.append( row[1] )
print sum(columnTwo,0.0) / len( columnTwo )
if __name__=="__main__":
main()
プリント14.38
行ヘッダーではなく、mean.txtファイルにデータを含めるだけです: "sda"
David Zaslavsky おもしろい:
with open("mean.txt", 'r') as f:
n,t = map(sum, Zip(*((1, float(line.split()[1])) for line in f)))
print t/n