手把手教你學Numpy——常用API合集

2021-01-10 酷扯兒

本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】,經微信公眾號授權轉載,如需轉載與原文作者聯繫

今天是Numpy專題的第5篇文章,我們來繼續學習Numpy當中一些常用的數學和統計函數。

基本統計方法

在日常的工作當中,我們經常需要通過一系列值來了解特徵的分布情況。比較常用的有均值、方差、標準差、百分位數等等。前面幾個都比較好理解,簡單介紹一下這個百分位數,它是指將元素從小到大排列之後,排在第x%位上的值。我們一般常用的是25%,50%和75%這三個值,通過這幾個值,我們很容易對於整個特徵的分布有一個大概的了解。

前面三個指標:均值、方差、標準差都很好理解,我們直接看代碼就行。

median和percentile分別是求中位數與百分位數,它們不是Numpy當中array的函數,而是numpy的庫函數。所以我們需要把array當做參數傳入。percentile這個函數還需要額外傳入一個int,表示我們想要得到的百分位數,比如我們想要知道50%位置上的數,則輸入50。

除了這些之外,我們還會經常用到sum,min,max,argmin,argmax這幾個函數。sum,min,max很好理解,argmin和argmax的意思是獲取最小值和最大值的索引。

這裡返回的索引有點奇怪,和我們想的不同,居然不是一個二維的索引而是一維的。實際上numpy的內部會將高維數組轉化成一維之後再進行這個操作,我們可以reshape一下數組來進行驗證:

這些只是api的基本用法,numpy當中支持的功能不僅如此。我們觀察一下這些函數會發現,它們的作用域都是一組數據,返回的是一組數據通過某種運算得到的結果。舉個例子,比如sum,是對一組數據的價格。std計算的是一組數據的標準差,這樣的函數我們稱為聚合函數。

numpy當中的聚合函數在使用的時候允許傳入軸這個參數,限制它聚合的範圍。我們通過axis這個參數來控制,axis=0表示對列聚合,axis=1表示對行聚合。我們死記的話總是會搞混淆,實際上axis傳入的也是一個索引,表示第幾個索引的索引。我們的二維數組的shape是[行, 列],其中的第0位是行,第1位是列,可以認為axis是這個索引向量的一個索引。

我們可以來驗證一下:

可以看到axis=0和axis=1返回的向量的長度是不同的,因為以列為單位聚合只有4列,所以得到的是一個1 x 4的結果。而以行為單位聚合有5行,所以是一個1 x 5的向量。

除了上面介紹的這些函數之外,還有cumsum和cumprod這兩個api。其中cumsum是用來對數組進行累加運算,而cumprod是進行的累乘運算。只是在實際工作當中,很少用到,我就不展開細講了,感興趣的同學可以查閱api文檔了解一下。

bool數組的方法

我們之前在Python的入門文章當中曾經提到過,在Python中True和False完全等價於1和0。那麼在上面這些計算的方法當中,如果存在bool類型的值,都會被轉化成1和0進行的計算。

我們靈活運用這點會非常方便,舉個例子,假設我們要統計一批數據當中有多少條大於0。我們利用sum會非常方便:

bool數組除了可以應用上面這些基本的運算api之外,還有專門的兩個api,也非常方便。一個叫做any,一個叫做all。any的意思是只要數組當中有一個是True,那麼結果就是True。可以認為是Is there any True in the array的意思,同樣,all就是說只有數組當中都是True,結果才是True。對應的英文自然是Are the values in the array all True。

這個只要理解了,基本上很難忘記。

排序

Python原生的數組可以排序,numpy當中的數組自然也不例外。我們只需要調用sort方法就可以排序了,不過有一點需要注意,numpy中的sort默認是一個inplace的方法。也就是說我們調用完了sort之後,原數組的值就自動變化了。

如果寫成了arr = arr.sort()會得到一個None,千萬要注意。

同樣,我們也可以通過傳入軸這個參數來控制它的排序範圍,可以做到對每一列排序或者是對每一行排序,我們來看個例子:

這個是對列排序,如果傳入0則是對行排序,這個應該不難理解。

集合api

numpy當中還提供了一些面向集合的api,相比於針對各種計算的api,這些方法用到的情況比較少。常用的一般只有unique和in1d。

unique顧名思義就是去重的api,可以返回一維array去重且排序之後的結果。我們來看個例子:

它等價於:

set(sorted(arr))

in1d是用來判斷集合內的元素是否在另外一個集合當中,函數會返回一個bool型的數組。我們也可以來看個例子:

除了這兩個api之外,還有像是計算併集並排序的union1d,計算差集的setdiff1d,計算兩個集合交集並排序的intersect1d等等。這些api的使用頻率實在是不高,所以就不贅述了。用到的時候再去查閱即可。

總結

今天我們聊了numpy當中很多常用的計算api,這些api在我們日常做機器學習和數據分析的時候經常用到。比如分析特徵分布的時候,如果數據量很大是不適合作圖或者是可視化觀察的。這個時候可以從中位數、均值、方差和幾個關鍵百分位點入手,再比如在我們使用softmax多分類的時候,也會用到argmax來獲取分類的結果。

總之,今天的內容非常關鍵,在numpy整體的應用當中佔比很高,希望大家都能熟悉它們的基本用法。這樣即使以後忘記,用到的時候再查閱也還來得及。

相關焦點

  • 手把手教你學ELISA、PCR、免疫組化
    1.手把手教你學ELISAELISA的基礎是抗原或抗體的固相化及抗原或抗體的酶標記。結合在固相載體 表面的抗原或抗體仍保持其免疫學活性,酶標記的抗原或抗體既保留其免疫學活性,又保留酶的活性。2.手把手教你學PCR實時螢光定量PCR,簡稱RT-QPCR,屬於Q-PCR的一種,目前該技術已得到廣泛應用,如:擴增特異性分析、基因定量分析、基因分型、SNP分析等。
  • 手把手教你NumPy來實現Word2vec
    Chia翻譯 | mui校對 | 醬番梨       整理 | 菠蘿妹原文連結:https://medium.com/@derekchia/an-implementation-guide-to-word2vec-using-numpy-and-google-sheets
  • 手把手教你使用Python實現常用的假設檢驗 !
    這篇文章,教大家用Python實現常用的假設檢驗!服從什麼分布,就用什麼區間估計方式,也就就用什麼檢驗!
  • 手把手教你按照孩子體重換算退燒藥的用量
    手把手教你按照孩子體重換算退燒藥的用量 2020-12-27 08:00 來源:澎湃新聞·澎湃號·湃客
  • Python Numpy-數組的常用函數
    日常使用numpy進行數據分析的時候,通常會使用模塊提供的函數,很大程度上方便了對於數據的操作。
  • Numpy學習打卡task01
    【1】numpy開源地址:https://github.com/numpy/numpynumpy的局限在數組中插入或追加條目並不像使用 Python 的 list 那樣簡單。用於擴展數組的 np.pad(...) 例程實際上創建了具有所需形狀和填充值的新數組,將給定數組複製到新數組中並返回。
  • 手把手教你製作ppt日記本
    手把手教你製作ppt日記本時間:2017-07-16 15:06   來源:三聯   責任編輯:沫朵 川北在線核心提示:原標題:ppt怎麼製作筆記本? 手把手教你製作ppt日記本 ppt怎麼製作筆記本?本文介紹了使用ppt製作日記本的方法,製作方法簡單,一起來學習吧!
  • PSoC 4 手把手教你成為魔方大神
    圖片來源:Kickstarter.com-HEYKUBEHEYKUBE亮點合集圖片來源:Cypress Blog手把手教玩家快速復原HEYKUBE 無需安裝任何應用程式想像一下:你可以編寫「小星星」歌曲並將其下載到魔方中,一旦謎題解決,它就會播放這首歌來慶祝你的勝利。語音交互HEYKUBE Voice 將支持 Alexa 功能,以兼容 Amazon Echo 設備。
  • 一文包會,教你如何熟練運用Python數值計算Numpy包
    對於用Python的朋友來說,在平常的數值計算中肯定會用到一個開源包,沒錯,它就是大名鼎鼎的Numpy包,全稱為Numberical Python,是Python的一種開源的數值計算擴展,Numpy包內部集成了大量的數學函數庫,你都可以隨手拿來使用,極為方便!
  • 《最強蝸牛》該隱打法攻略 手把手教你該隱怎麼打
    《最強蝸牛》該隱打法攻略 手把手教你該隱怎麼打時間:2020-10-01 15:47   來源:遊俠網   責任編輯:沫朵 川北在線核心提示:原標題:《最強蝸牛》該隱打法攻略 手把手教你該隱怎麼打 最強蝸牛該隱怎麼打?
  • word最後一頁空白頁怎麼刪除 手把手教你如何刪除Word最後一頁空白頁
    word最後一頁空白頁怎麼刪除 手把手教你如何刪除Word最後一頁空白頁時間:2017-06-14 13:53   來源:系統天堂   責任編輯:沫朵 川北在線核心提示:原標題:word最後一頁空白頁怎麼刪除 手把手教你如何刪除Word最後一頁空白頁 用過word的朋友都知道,word最後一頁常常出現空白頁。
  • 剪映素材庫在哪裡 手把手教你剪映素材庫怎麼用
    剪映素材庫在哪裡 手把手教你剪映素材庫怎麼用時間:2020-07-01 17:09   來源:騰牛網    責任編輯:沫朵 川北在線核心提示:原標題:剪映素材庫在哪裡 手把手教你剪映素材庫怎麼用 剪映是非常好用的剪輯工具,現在很多人都愛用,裡面有很多功能,可以製作出很好的視頻。
  • 我的***煙花炮竹圖文教程 手把手教你煙花炮竹怎麼做
    :原標題:我的****煙花炮竹圖文教程 手把手教你煙花炮竹怎麼做 除夕時我們都會用炮竹驅趕年魔,也叫夕,那麼如果想在我的****中建造一個煙花炮竹應該怎麼做呢?想必各位玩家對此存在許多疑惑,接下來我們一起來跟隨諸葛教科書看看我的****煙花炮竹教程吧。
  • 弱電電工技術不好學,老電工從零開始教你,圖文標準全面,可下載
    但是弱電對大多數施工來說還是比較有難度的,所以今天整理了這份弱電電工技術手冊,老電工手把手教你學弱電。這份弱電電工技術全面介紹了弱電電工技術,內容包括:智能樓宇設備自動化基礎;安全防範和消防控制系統;通信和網絡系統;電視機廣播系統;空氣新風調節系統和空調調節系統;供水、供電控制系統及綜合布線的相關知識等。內容通俗易懂,具體翔實。
  • 《閃耀暖暖》AR模式拍照方法介紹 手把手教你如何拍照
    《閃耀暖暖》AR模式拍照方法介紹 手把手教你如何拍照時間:2019-07-18 10:23   來源:牛遊戲網   責任編輯:沫朵 川北在線核心提示:原標題:《閃耀暖暖》AR模式拍照方法介紹 手把手教你如何拍照 在《閃耀暖暖》手遊中,玩家們可以使用AR模式來給暖暖拍照了,拍照背景可以選擇遊戲場景或者真實場景,還可以選擇不同的拍照姿勢哦
  • 手把手教你使用win7電腦放大鏡
    手把手教你使用win7電腦放大鏡時間:2018-03-27 08:25   來源:系統天堂   責任編輯:沫朵 川北在線核心提示:原標題:win7放大鏡怎麼用? 手把手教你使用win7電腦放大鏡 win7放大鏡怎麼用?有時候網頁的字太小,我們會遇到看不清楚的情況,這時候我們可以藉助電腦本身的放大鏡功能,來清晰查看內容。
  • 明年1月到手工資或能變多,手把手教你操作
    記者手把手來教你。按照規定,每年12月份要對次年享受專項附加扣除的內容進行確認,確認後,才可在扣除年度生效。 打工人注意了,2021年度個稅專項附加扣除開始確認了。怎麼操作?記者手把手來教你。按照規定,每年12月份要對次年享受專項附加扣除的內容進行確認,確認後,才可在扣除年度生效。
  • 完美世界手遊尋寶利器完成攻略 手把手教你尋寶利器怎麼做
    完美世界手遊尋寶利器完成攻略 手把手教你尋寶利器怎麼做時間:2019-03-18 16:31   來源:優遊網   責任編輯:沫朵 川北在線核心提示:原標題:完美世界手遊尋寶利器完成攻略 手把手教你尋寶利器怎麼做 完美世界手遊尋寶利器怎麼做?
  • 我叫MT4失落的寶藏詳細攻略 手把手教你完成隱藏任務巨額獎勵等你拿
    我叫MT4失落的寶藏詳細攻略 手把手教你完成隱藏任務巨額獎勵等你拿時間:2018-08-06 17:03   來源:18183   責任編輯:沫朵 川北在線核心提示:原標題:我叫MT4失落的寶藏詳細攻略 手把手教你完成隱藏任務巨額獎勵等你拿 失落的寶藏系列任務是我叫MT4中的隱藏任務之一,其豐富獎勵讓眾多玩家垂涎
  • 《企鵝電競》直播圖文教程 手把手教你怎麼開通企鵝電競直播
    《企鵝電競》直播圖文教程 手把手教你怎麼開通企鵝電競直播時間:2020-06-24 18:49   來源:咖綠茵   責任編輯:沫朵 川北在線核心提示:原標題:《企鵝電競》直播圖文教程 手把手教你怎麼開通企鵝電競直播 企鵝電競怎麼直播呢,玩騰訊遊戲的人一般都愛看企鵝電競上面的直播,不少網友想知道該怎麼開直播,接下來就讓咖綠茵小編給大家帶來