生信(五)awk求取某一列的平均值

2021-08-30 15:36:31 字數 992 閱讀 1206

awk是生信人必須要掌握的命令列工具。為啥?因為它太強大了。我們舉乙個例子來說明。

假設我們有乙個1000萬行的檔案,大概長這樣:

怎麼求第四列的平均數呢

python版本

我們可以用幾行python**解決,比如這樣:

r版本

用r來做計算也是很適合的,比如像這樣:

awk版本

awk用一行**就可以解決問題,像這樣(注意耗時):

至此,我們可以看出,awk**簡單,但是效能卻不差!在同樣的機器上處理同樣的檔案,awk的執行時間是python的一半左右,是r的大概十分之一。可以說,awk已經非常快了

c版本

都說c快,讓我們看看到底有多快。**如下:

可以看出,c的版本也僅比awk的稍快一點點。但是,c的**複雜多了!由此,我們可以粗略比較出awk是乙個非常完美的文字處理工具!

如果有任何問題,歡迎交流!

處理陣列中的nan,用這一列的平均值去替換

在jupyter 裡面寫的 練習!處理陣列中的nan t np.arange 24 reshape 4 6 astype float print t 將陣列中的一部分替換成nant 1 3 np.nan print t 遍歷每一列,然後判斷每一列是否有nan for i in range t.sha...

awk命令獲取文字的某一行某一列

1 列印檔案的第一列 域 awk filename 2 列印檔案的前兩列 域 awk filename 3 列印完第一列,然後列印第二列 awk filename 4 列印文字檔案的總行數 awk end filename 5 列印文字第一行 awk nr 1 filename 6 列印文字第二行第...

使用awk命令獲取文字的某一行,某一列

1 列印檔案的第一列 域 awk filename 2 列印檔案的前兩列 域 awk filename 3 列印完第一列,然後列印第二列 awk filename 5 列印文字第一行 awk nr 1 filename 6 列印文字第二行第一列 sed n 2,1p filename awk pri...