Linux 如何计算列的平均值
有人知道我如何计算这些列(在linux上)的平均值吗Linux 如何计算列的平均值,linux,shell,scripting,Linux,Shell,Scripting,有人知道我如何计算这些列(在linux上)的平均值吗 例如:mean(第2列)您可以使用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:
例如:mean(第2列)您可以使用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()
印刷品14.38
我只是将数据包含在mean.txt文件中,而不是行标题:“sda”Awk:
awk '{ total += $2 } END { print total/NR }' yourFile.whatever
改为:
- 对于每一行,将第2列添加到变量“total”中
- 在文件末尾,打印“总计”除以记录数
- 为了好玩:
with open("mean.txt", 'r') as f:
n,t = map(sum, zip(*((1, float(line.split()[1])) for line in f)))
print t/n
将使用以下行计算平均值:
r -k2 mean file.txt
第二栏。它还可以进行更为复杂的统计分析,因为它用于所有的统计分析。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。。。但是在这里列出这个列表可能效率太低了,因为您实际上只需要行的总数和行数。(还有,为了好玩:
将open(“mean.txt”,“r”)作为f:n,t=map(sum,zip(*(1,float(line.split()[1]),表示f中的行));print t t/n
)@Porges:如何访问特定的间隔:假设在第二列中,我想找到元素2到6的平均值?@SathishKrishnan这有点晚了,但是对于其他人:您可以在第一部分前面加上NR==2,NR==6{total+=…
(请参阅:)
0
0.485
14.38
1.74
0.888333333333333
77.27
49.8266666666667
39.91
1.29833333333333
434.131666666667