Python冬令營-Numpy 使用簡介

2021-03-02 pkuschool技術中心

Numpy 簡介: 使用python進入數據科學的世界!

source: https://realpython.com/numpy-tutorial/#hello-numpy-curving-test-grades-tutorial

聲明:本篇推送的主要內容翻譯自:

https://realpython.com/numpy-tutorial/#hello-numpy-curving-test-grades-tutorial

學習目標:

1.創建Numpy 數組

2.Numpy數組的簡單運算運算

3.從numpy數組中提取信息

4.對numpy數組中的元素進行排序

5.連接(concatenate) numpy數組

如果您閱讀了之前的幾篇推送,相信您已經對python語言以及電腦程式設計有了一定的了解。在現今萬物開始互聯的時代,對於數字信息與數據的獲取與處理能力是每個人應該掌握的技能,今天這篇推送將為大家簡單介紹Numpy工具庫。

在先前的推送中,我們曾經使用numpy進行過簡單的統計數據計算,但是還沒來得及說明numpy是什麼,為什麼要學習它,以及系統地講解它的使用方法。

Numpy是針對python語言編寫的一個強大的數值運算函數庫,它的優點就包括:

1.運算速度快

2.通過向量運算減少代碼中的循環結構

3.包含豐富的數值計算函數

4.是許多更高級數據科學工具的基礎

讓我們以一個簡單的案例開始,假設您給學生布置了一項測驗,但是因為測驗內容過難,大多數學生的成績都不如平常,所以您想對學生的分數進行處理,讓它更能體現學生的真實水平。所以您打算這麼處理:

1.計算所有學生成績的平均分,把平均分當做C等級的分數

2.對所有學生的成績加上(80-平均分)

運行該程序,您將在解釋器中得到

在以上的代碼中,最重要的是第二行,

它創建了一個numpy一維數組,由8個元素構成。使用numpy數組最方便地方在於它可以實現向量化的運算。例如:

得到的結果是:

即數組中對應位置元素的和

numpy數組還是方便的實現廣播,即將一個數值加到一組數的所有元素上

這也就是為什麼說,使用numpy數據結構可以大大減少循環結構的使用頻率。

下面來創建一個二維數組

這個二維數組,可以看成是這樣一個矩陣

也可以把矩陣看成是向量(一維矩陣)的組合。所以對於這樣一個矩陣,它可以由兩組向量組合代表,一組是將每一行看成是一個向量,另一組是將每一列看成一個向量。這個方向在數值計算中非常重要,就以找最大值為例:

得到的輸出信息是:

第一種方法是找到矩陣中所有元素的最大值(9), 第二個方法是找到每一列中的最大值,並由此構成了一個新的一維數組,這裡的axis=0,是選擇沿著每一列進行數值計算。同理第三種情況是沿著每一個行向量,找到其最大值,並整合成一個一維數組。

數組間的廣播運算(Broadcasting)

Numpy 允許不同形狀的數組進行廣播運算。例如:我們在這裡創建兩個不同形狀的二維數組

a是一個2*8的二維數組,b是一個1*8的二維數組,我們可以這樣表示,, ,即用行向量來表示這兩個數組。

先從c的形狀來分析,它是一個2*8的二維數組,同時發現每一行是數組a中每一行加數組b的數值,這也就是數組b的數值被」廣播」到了數組a的每一行中。

從數組中提取數據

創建這樣一個二維數組

現在來計算這個數組中:

1.每一行的和

2.每一列的和

3.兩組對角線元素的和

4.將這個矩陣劃分為一個由4個2*2子矩陣構成的矩陣,計算每個子矩陣的和

對於數組元素,採用與python列表一樣的序號索引,維度之間用逗號隔開。對於二維數組,第一位是行標,第二位是列標。例如square[:,1]代表第二列所有元素。同理,square[1,:]代表第二行的所有元素。

下面來計算兩組對角元素的和

這裡使用-(i+1)作為元素序號表示從右邊開始選取元素。例如square[0,-1]表示square中第一行倒數第一個元素,square[1,-2]表示第二行倒數第二個元素。

接著計算計算四個子矩陣的和:

以upper_left為例,[:2,:2]表示其前兩行與前兩列所有元素的交集,即矩陣左上角的四個元素,接著使用.sum()得到這四個元素的和。

除了通過元素位置來獲取信息,還可以通過masking來從矩陣中截取符合要求的信息。它的基本工作原理是,建立一個與原數組相同形狀的數組,這個數組的元素只允許有兩個值, 真或者假(True, False).

下面以一個例子介紹這種信息提取的方法:

首先生成一個數組

生成這個數組用到了幾個常用numpy函數,np.linspace(5,50,24,dtype)表示從區間[5,50]中等距離選取24個元素,將每個元素的類型設置為整數(dtype=int). 最後使用.reshape()轉換成二維數組。Reshape(4,-1)中的-1表示,numpy會根據元素個數和行的數目(4)自動計算列的數目。

然後生成mask數組

最後將mask作用於原數組

這裡需注意的是,經過mask過濾的元素組成的是一個一維數組。

當然也可以將以上兩個步驟縮減為一行代碼

我們還可以使用numpy來驗證統計學的一個基本事實: 在正態分布中, 約95%的數值都分布在以均值為中心的兩個標準差以內。

以下是進行了10次的隨機試驗的結果

使用Numpy進行排序 

在默認情況下,np.sort()將對數組最內側括號中的元素進行排序

如果將axis參數設置為None, 將會對所有元素進行排序,並輸出一個排列好的一維數組

如果想獲得一個逆序的排列,使用

要將每一列進行排序,將參數axis設置為0

使用numpy連接數組

今天只是向大家簡單介紹numpy的使用方法,今後還會有更多關於numpy的使用案例。請大家關注北大附中技術中心公眾號!!

相關焦點

  • 好程式設計師Python培訓分享numpy簡介
    好程式設計師Python培訓分享numpy簡介:一、numpy簡介:NumPy是一個功能強大的Python庫,主要用於對多維數組執行計算。NumPy這個詞來源於兩個單詞-- Numerical和Python。NumPy提供了大量的庫函數和操作,可以幫助程式設計師輕鬆地進行數值計算。
  • Numpy 使用簡介
    Numpy 簡介: 使用python進入數據科學的世界!
  • Python冬令營安排
    北大附中技術中心 Python冬令營時間表出爐了!!
  • Python | Numpy簡介
    Numpy簡介python標準庫中的列表(list)可以當數組用,支持動態內存分配和垃圾收集,列表元素可以是任何對象,功能強大!兩大法寶:多維數組ndarray和通用函數ufunc如何使用Numpy等python第三方軟體包?(如何開外掛?)被import的可以是通過conda或pip安裝的包,也可以是python的path中(包括當前目錄)的其它x.py文件。
  • python數據分析專題 (10):numpy使用
    NumPy的ndarry類型也可以進行很多操作,例如數組的索引,組合等,這次內容介紹一些關於numpy多維數組的操作。
  • Python中NumPy簡介及使用舉例
    它描述相同類型的元素集合,可以使用基於零的索引訪問集合中元素。基本的ndarray是使用NumPy中的數組函數創建的: numpy.array。NumPy支持比Python更多種類的數值類型。NumPy數值是dtype(數據類型)對象的實例,每個對象具有唯一的特徵。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • python數據分析專題 (9):numpy基礎
    總之,知道numpy是python數據分析最重要的基礎包就可以了。有了numpy才可以利用這種數組對整塊數據執行一些數學運算,比python自帶的數組以及元組效率更高,其語法跟變量元素之間的運算一樣,無需進行循環操作。為什麼需要numpypython默認進行多個數據的計算,是使用循環,如果循環次數多,就非常耗時。
  • 學員筆記||Python數據分析之:numpy入門(一)
    :Numpy簡介,ndarray對象的構建,以及對ndarray屬性的理解。numpy最主要的是支持矩陣操作與運算非常高效是numpy的優勢,core為C編寫。提升了python的處理效率numpy是一些與比較流行的機器學習框架的基礎。
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • 使用NumPy 讓你的 Python 科學計算更高效
    使用numpy可以使python的計算效率更高。NumPy 數組存儲在一個均勻連續的內存塊中。這樣數組計算遍歷所有的元素,不像列表 list 還需要對內存地址進行查找,從而節省了計算資源。連續數組的創建,可以使用arange和linspace函數進行創建:arange() 類似內置函數 range(),通過指定初始值、終值、步長來創建等差數列的一維數組,默認是不包括終值的。linspace 是 linear space 的縮寫,代表線性等分向量的含義。
  • python數據分析:numpy入門
    微信公眾號:學點啥玩點啥小白友好型python數據分析:numpy入門numpy:一個在python中做科學計算的基礎庫,重在數值計算,也是大部分python科學計算庫的基礎庫,多用於在大型、多維數組上執行數值計算。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    python使用ctypes模塊調用DLL函數之傳遞數值、指針與字符串參數、一般情況下,DLL函數中傳遞C語言類型的數組,在接收到Python語言中時,通常將其轉換為numpy庫裡面的數組類型,這樣做的好處是可以藉助於numpy強大的分析處理功能對數據直接作後續處理。這次通過例子演示下C語言數組到numpy數組之間是怎樣傳遞的。
  • Python NumPy可視化圖解(上)
    numpy數組 vs. Python列表乍看上去,NumPy數組與Python列表極其相似。它們都用來裝載數據,都能夠快速添加或獲取元素,插入和移除元素則比較慢。當然相比python列表,numpy數組可以直接進行算術運算:
  • python:numpy入門詳細教程
    python數據科學基礎庫主要是三劍客:numpy,pandas以及matplotlib,每個庫都集成了大量的方法接口,配合使用功能強大。本篇先從numpy開始,對numpy常用的方法進行思維導圖式梳理,多數方法僅拉單列表,部分接口輔以解釋說明及代碼案例。最後分享了個人關於axis和廣播機制的理解。本文知識要點一級菜單
  • 不懂NumPy 算什麼 Python 程式設計師?|CSDN 博文精選
    換句話說,為了高效地使用當今科學/數學基於 Python 的工具(大部分的科學計算工具),你只知道如何使用 Python 的原生數組類型是不夠的,還需要知道如何使用 numpy 數組。在這個 AI 和 ML 霸屏的時代,如果不懂 NumPy,請別說自己是 Python 程式設計師。
  • Python數據科學Numpy基礎20問
    1、什麼是numpy?一言以蔽之,numpy是python中基於數組對象的科學計算庫。提煉關鍵字,可以得出numpy以下三大特點:2、如何安裝numpy?因為numpy是一個python庫,所以使用python包管理工具pip或者conda都可以安裝。
  • 學習Python必知的Numpy函數
    認識NumPy安裝NumPy如果您用 conda 管理安裝的擴展包,請輸入:conda install numpy如果您用 pip 管理安裝的擴展包,請輸入:pip install numpy新建一個 Jupyter notebook
  • Python學習|Anaconda、Jupyter Notebook、pycharm安裝使用詳解
    5.2.2 conda環境管理5.2.3 conda 包管理5.2.4 Conda 使用國內源6 Jupyter Notebook7 pycharm7.1 pycharm簡介7.2 pycharm安裝7.3 pycharm 新建工程7.4 pycharm 使用不同python
  • Python Numpy學習教程(一)Python篇
    這篇文章主要簡單介紹Python的基本數據結構、容器、列表、字典、集合、元組、函數和類等知識點Python Numpy學習教程Author:     Justin JohnsonInterpreter:AmusiDate:   2018-03-24Reference:[1]:http://cs231n.github.io/python-numpy-tutorial