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