-3

私はこのようなデータのセットを持っています

201206040210 -3461.00000000 -8134.00000000 -4514.00000000 -4394.00000000 0 201206040211 -3580.00000000 -7967.00000000 -4614.00000000 -7876.00000000 0 201206040212 -3031.00000000 -9989.00000000 -9989.00000000 -3419.00000000 0 201206040213 -1199.00000000 -6961.00000000 -3798.00000000 -5822.00000000 0 201206040214 -2940.00000000 -5524.00000000 -5492.00000000 -3394.00000000 0

最後から 2 番目の列を取得して、最小値、最大値、および平均値を見つけたいと思います。列がスペースと - で区切られている場合に分割を使用する方法について少し混乱しています。私はそれをしたら、min() と max 関数を使用できるようになります。ここで同じことを行うシェルスクリプトを作成しました

#!/bin/ksh
awk '{print substr($5,2);}' data' > /data1
sort -n data1 > data2
tail -1 data2
head -1 data2
awk '{sum+=$1} END {print "average = ",sum/NR}' data2

Pythonでこれを行う方法がわかりません。ありがとう

編集: numpy を使用してこれを行うことにしました。

4

2 に答える 2

4
with open("filename") as f:    
    cols = [float(row.split("-")[-2]) for row in f.readlines()]
print min(cols), max(cols), sum(cols) / len(cols)
于 2012-06-06T16:39:04.823 に答える
0

これはそれを行います:

with open('rows.txt', 'r') as f:
    col=[float(row.split("-")[-2]) for row in f]

print 'min: {} max: {} avg: {}'.format(min(col),max(col),sum(col)/float(len(col)))  

出力:

min: 3798.0 max: 9989.0 avg: 5681.4

標準入力を読みたい場合は、次のようにします。

import sys

col=[float(row.split("-")[-2]) for row in sys.stdin]

print 'min: {} max: {} avg: {}'.format(min(col),max(col),sum(col)/float(len(col)))  

stdin テキストを読み取って同じことを行います。

于 2012-06-06T17:02:03.913 に答える