从命令行获取一组数字的平均值的最快方法是啥?

Posted

技术标签:

【中文标题】从命令行获取一组数字的平均值的最快方法是啥?【英文标题】:What's the quickest way to get the mean of a set of numbers from the command line?从命令行获取一组数字的平均值的最快方法是什么? 【发布时间】:2010-09-17 21:07:39 【问题描述】:

使用您希望在 nix 系统上找到的任何工具(事实上,如果您愿意,msdos 也可以),假设您计算一组数字的平均值的最简单/最快的方法是什么在流或文件中每行一个吗?

【问题讨论】:

【参考方案1】:
awk '  n += $1 ; END  print n / NR '

这会在 n 中累加总和,然后除以项目数(NR = 记录数)。

适用于整数或实数。

【讨论】:

NR 技巧不错,但不确定要接受哪个 awk 答案,所以我选择了票数最高的答案!【参考方案2】:

Awk

awk 'total += $1; count++  END print total/count'

【讨论】:

【参考方案3】:

在 UNIX 上使用 Num-Utils:

average 1 2 3 4 5 6 7 8 9

【讨论】:

有趣。我在 Ubuntu 上安装了这个,我必须在标准输入上指定数字,而不是作为参数。【参考方案4】:
perl -e 'while (<>)  $sum += $_; $count++  print $sum / $count, "\n"';

【讨论】:

【参考方案5】:

使用“st”(https://github.com/nferraz/st):

$ st numbers.txt
N      min   max    sum    mean  sd
10.00  1.00  10.00  55.00  5.50  3.03

指定一个选项以查看个人统计数据:

$ st numbers.txt --mean
5.5

(免责声明:我写了这个工具:))

【讨论】:

【参考方案6】:

在 Powershell 中,它会是

get-content .\meanNumbers.txt | measure-object -average

当然,这是冗长的语法。如果您使用别名输入,

gc .\meanNumbers.txt | measure-object -a

【讨论】:

【参考方案7】:

Perl。

@a = <STDIN>;

for($i = 0; $i < #@a; $i++)

   $sum += $a[i];


print $a[i]/#@a;

Caveat Emptor:我的语法可能有点奇怪。

【讨论】:

【参考方案8】:

红宝石一班

cat numbers.txt | ruby -ne 'BEGIN$sum=0; $sum=$sum+$_.to_f; ENDputs $sum/$.'

source

【讨论】:

以上是关于从命令行获取一组数字的平均值的最快方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何从一组数字计算平均值,中位数,模式和范围

获取时检查行存在的最快方法是啥?

如何确定从用户输入中获取平均值

从 django 中的一组对象中获取平均值

在Clojure中对数据的大矢量进行排序的最快方法

“平均值”是啥意思?