複数行のデータ平均

複数行のデータ平均

次の時間ステップを含むデータファイルがあります1024

1 0.240112  0.0610352 1.00659  
2 0.240112  0.0610352 1.00659
...
1024    0.237366  0.0576172 1.00189   

私は2つのことをしたい -

  1. N行ごとに値の平均を計算して、行数をN倍減らします。たとえば、N = 16の場合、1024 / 16 = 64行のデータが残ります。
  2. 指数関数的に増加する行数の平均を返します。たとえば、2 ^ N行(1-2、3-4、5-8、9-16など)ごとに平均を求めたい場合です。この場合、log_2(1024)= 10行が残ります。

grepこれを行うために、またはawkそのようなコマンドを使用できますか?

ベストアンサー1

最初の作業:

awk '
BEGIN {
    N = 16;
}
{
    for(i = 1; i <= NF; i++) {
        arr[i] += $i;   
    }
}
NR % N == 0 {
    for(i = 1; i <= NF; i++) {
        printf "%s ", arr[i] / N;
    }
    print "";
    delete arr;

}' input.txt

2番目のタスク:

awk '
BEGIN {
    N = 2;
}
{
    for(i = 1; i <= NF; i++) {
        arr[i] += $i;   
    }
}
NR % N == 0 {
    for(i = 1; i <= NF; i++) {
        printf "%s ", arr[i] / (N - M);
    }
    print "";
    delete arr;

    M = N;
    N *= 2;
}' input.txt

おすすめ記事