【发布时间】:2018-03-01 05:13:42
【问题描述】:
我有 100 个名为 file.1.netcc、file.2.netcc ... file.100.netcc 的文件。每个文件包含以下内容:
# 4 # Number of network ROIs
# 2 # Number of netcc matrices
# WITH_ROI_LABELS
LFovea_LO LLO LMT RV3A
1 2 3 4
# CC
1.0000 0.2271 -0.1172 -0.2258
0.2271 1.0000 0.3991 0.1092
-0.1172 0.3991 1.0000 0.3055
-0.2258 0.1092 0.3055 1.0000
# FZ
4.0000 0.2312 -0.1177 -0.2297
0.2312 4.0000 0.4226 0.1096
-0.1177 0.4226 4.0000 0.3156
-0.2297 0.1096 0.3156 4.0000
现在,例如,我想要平均所有“cc”值。每个值将从所有文件中取平均值。例如,我们取第一列第一行的第一个值(1.0000)从所有文件中取平均值,然后输出为平均值……以此类推,直到最后一位,即第 4 列第 4 行值(1.0000) 对所有文件进行平均。
所以我想要返回的是一个 4x4 表,其中的值是所有文件的平均值。
我也希望为它下面的“FZ”类别完成此操作。我该怎么做?
我尝试使用这个命令:
awk '{a[FNR]+=" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8;b[FNR]++;}END{for(i=1;i<=FNR;i++)print i,a[i]/b[i];}' /Users/3dnetcorr/file*.netcc > outputs_averaged.file
但是这个命令所做的(我认为)是对整个列进行平均,每列给我一个值。这不是我想要的。
我想我要问的是如何平均出包含矩阵的文件? 如何使用 python 编码做到这一点? numpy 可能吗?
【问题讨论】:
-
@melpomene 这是一个错字。它已被修复。我的意思是第四行第四列。
-
我不会用 awk 做这个。我可能会写一个 perl 程序。
标签: python bash matrix average