Как я вычисляю средний из столбца

Кто-либо знает, как я могу вычислить средние из этих столбцов (на 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  

Например: средний (столбец 2)

29
задан Ciro Santilli 新疆改造中心法轮功六四事件 21 November 2015 в 11:07
поделиться

3 ответа

Awk:

awk '{ total += $2 } END { print total/NR }' yourFile.whatever

Читается как:

  • Для каждой строки добавьте столбец 2 к переменной «total».
  • В конце файла выведите «всего», разделенное на количество записей.
69
ответ дан 28 November 2019 в 01:04
поделиться

Для этого можно использовать python, есть в Linux.

Если это происходит из файла, посмотрите на этот вопрос, просто используйте 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()

Prints 14.38

Я просто включаю данные в файл mean.txt, а не в заголовок строки: "sda"

1
ответ дан 28 November 2019 в 01:04
поделиться

Дэвид Заславский для забавы:

with open("mean.txt", 'r') as f: 
    n,t = map(sum, zip(*((1, float(line.split()[1])) for line in f)))
print t/n
0
ответ дан 28 November 2019 в 01:04
поделиться