python3.7对应的numpy版本_图解NumPy包一文就够了
在之前的生信分析方向如何系統(tǒng)入門python3推文最后,我們提到了python有很多好用的模塊和加載包,也正因?yàn)檫@些,所以才使得python能夠靈活多場(chǎng)景處理分析。
整合最近學(xué)習(xí)的一些內(nèi)容,借以 Jay Alammar的博客,就來(lái)介紹一下其中一個(gè)基礎(chǔ)數(shù)據(jù)處理包 NumPy吧。
今天的推送大綱如下:
不難發(fā)現(xiàn),Numpy主要用于數(shù)據(jù)分析,整體的模式有點(diǎn)類似于小型的R,在讀取和處理數(shù)據(jù)上略占優(yōu)勢(shì),但是R的強(qiáng)大在于其統(tǒng)計(jì)分析和可視化。融會(huì)貫通,哪哪都好。
一開(kāi)始使用 Numpy只是想簡(jiǎn)單使用它的內(nèi)置函數(shù),比如判斷一下序列長(zhǎng)度最大值呀,或者計(jì)算一下樣本數(shù)據(jù)的均值等。收集資料發(fā)現(xiàn)其中還有不少有意思的東西。
基本用法
既然是一個(gè)包那就要載入:
import?numpy?as?np構(gòu)建基本數(shù)據(jù)結(jié)構(gòu):
數(shù)組
# 構(gòu)建數(shù)組np.array([1,2,3])
np.ones(3)
np.random.random(3)
矩陣
與數(shù)組的構(gòu)建寫(xiě)法相同,但是不同的是矩陣可以包含二維關(guān)系,同樣包含ones()、zeros() 和 random.random() 快速方法,即
# 構(gòu)建矩陣
np.array([[1,2],[3,4]])np.zeros((3,2))
更多維度
矩陣和向量的任意維度結(jié)構(gòu)
ndarraynp.array([[1,2],[3,4]],[[5,6],[7,8]])
運(yùn)算
基本運(yùn)算
數(shù)組運(yùn)算的規(guī)則是一一對(duì)應(yīng)進(jìn)行計(jì)算,例如加減乘除。
我們?cè)谥昂瘮?shù)中介紹過(guò)一種函數(shù),可以快速對(duì)列表中的每一個(gè)元素進(jìn)行計(jì)算,而在 Numpy中只需對(duì) data * 1.6即可。
矩陣的運(yùn)算有點(diǎn)類似上面的方式,稱為 broadcasting,若不滿足相同的維度,則會(huì)自動(dòng)補(bǔ)齊進(jìn)行計(jì)算。
點(diǎn)乘
除了上述的廣播式計(jì)算方法外,NumPy為每個(gè)矩陣提供一個(gè)dot()方法,即分別進(jìn)行計(jì)算,示例如下:
具體的計(jì)算方法如下:
索引
類似于列表的切片,對(duì)于Numpy數(shù)組的任意位置進(jìn)行索引:
矩陣的索引使用二維的方式展示,以?,分割對(duì)應(yīng)橫縱軸:
數(shù)據(jù)聚合
在這一部分,數(shù)組和矩陣便可以快速計(jì)算其最大值data.max()、最小值data.max()、均值data.min()、標(biāo)準(zhǔn)差data.std()、求和data.sum()等。
值得一提的是,在矩陣聚合中,有一個(gè)參數(shù) axis支持跨行或者跨列聚合:在圖中可以形象的理解為 axis=0為豎向計(jì)算, axis=1 為橫向計(jì)算,即最外面的括號(hào)代表著 axis=0,依次往里的括號(hào)對(duì)應(yīng)的 axis 的計(jì)數(shù)就依次加 1。
轉(zhuǎn)置
有時(shí)候?yàn)榱丝梢暬男枨?#xff0c;我們會(huì)在excel或者R語(yǔ)言中使用轉(zhuǎn)置的功能。當(dāng)然python不能落下,使用也相當(dāng)簡(jiǎn)單data.T
而在更高級(jí)的場(chǎng)景下,你可能需要對(duì)矩陣轉(zhuǎn)變?yōu)樘囟ǖ木S度,這樣你就需要使用 data.reshape()來(lái)實(shí)現(xiàn)了。
是不是越來(lái)越像excel了,關(guān)于二維矩陣的介紹,還有一個(gè)更有用的包 pandas 值得學(xué)習(xí)。
高階用法
除了向量和舉證支持運(yùn)算外,公式的使用也是 NumPy 成為寵兒的原因之一。例如在解決回歸問(wèn)題中監(jiān)督式機(jī)器學(xué)習(xí)的核心公式:均方差公式
在 Nmupy中體現(xiàn)為,值得注意的是對(duì)于 predictions 和 labels可以任意多個(gè)值,我們可以根據(jù)圖形依次追蹤計(jì)算:
1
2
3
4
最終可以獲得的預(yù)測(cè)的誤差值和模型評(píng)分。
更多應(yīng)用
時(shí)間序列和音樂(lè)
例如以下的一段音頻文件(一維數(shù)組),存入Numpy,那么就可以通過(guò)切片進(jìn)行音頻分割和定位。
CD 質(zhì)量的音頻每秒包含 44,100 個(gè)樣本,每個(gè)樣本是-65535 到 65536 之間的整數(shù)。這意味著如果你有一個(gè) 10 秒的 CD 質(zhì)量 WAVE 文件,你可以將它加載到長(zhǎng)度為 10 * 44,100 = 441,000 的 NumPy 數(shù)組中。
圖像
圖像是尺寸(高度 x 寬度)的像素矩陣。
舉個(gè)例子:
如果是黑白(即灰度),那么就可以以上圖的形式展示,如果是彩色(RGB)三個(gè)數(shù)字代表紅綠藍(lán),因此需要我們?cè)谥疤岬降膎darray
語(yǔ)言
語(yǔ)言的處理就相對(duì)于復(fù)雜,這里就簡(jiǎn)單地過(guò)一下的大概的原理,首先需要構(gòu)建一個(gè)數(shù)據(jù)集:
然后根據(jù)詞云(單詞或單詞的一部分)劃分獲得token數(shù)組:
然后我們替換其中的每一個(gè)詞,使用我們自己構(gòu)建的數(shù)據(jù)集:
但是這些ID并未對(duì)模型提供太多信息,需要使用50維word2vec進(jìn)行替換(So before feeding a sequence of words to a model, the tokens/words need to be replaced with their embeddings (50 dimension word2vec embedding in this case):)
然后你就得到了一個(gè)維度為 [embedding_dimension x sequence_length]的數(shù)組。
出于性能原因,深度學(xué)習(xí)模型傾向于保留批大小的第一維(因?yàn)槿绻⑿杏?xùn)練多個(gè)示例,模型訓(xùn)練速度會(huì)加快)。在這種情況下,reshape() 變得非常有用。如像 BERT 這樣的模型期望的輸入形式是:[batch_size,sequence_length,embedding_size]。
一點(diǎn)注意
Numpy庫(kù)都要準(zhǔn)備放棄支持python2(最后一個(gè)版本LTS 版支持到2019年12月31日),快來(lái)一起加入python3的學(xué)習(xí)吧~
猜你喜歡
?三劍客 PyCharm使用??|?編程基礎(chǔ)與規(guī)范代碼?|?列表使用?
?元組拆包是個(gè)啥?|?字典與FASTA文件序列抽提?
如何判斷序列是否跨過(guò)剪切位點(diǎn)?|?python3 腳本小實(shí)戰(zhàn)
爬蟲(chóng)小測(cè)試?|?函數(shù)入門
如何優(yōu)雅的數(shù)月餅?|為什么要使用函數(shù)
NCBI的文獻(xiàn)搜索與影響因子和分區(qū)
類與對(duì)象
號(hào)外:生信技能樹(shù)全國(guó)巡講11月在福州和上海,點(diǎn)擊了解報(bào)名哈:(福州、上海見(jiàn)!)全國(guó)巡講第19-20站(生信入門課加量不加價(jià))
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python3.7对应的numpy版本_图解NumPy包一文就够了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 张译新剧《他是谁》大结局:评分高开低走
- 下一篇: 《街霸》蓄力待发