乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python科學(xué)計(jì)算-Numpy包使用

       生物_醫(yī)藥_科研 2019-08-31

           Numpy包是一個(gè)用于科學(xué)計(jì)算的第三方python包,使用Numpy包可以實(shí)現(xiàn)Python幾乎所有的數(shù)據(jù)操作,此外有些更新的工具包(如pandas等)都是圍繞NumPy數(shù)組構(gòu)建的。本節(jié)將提供一些使用NumPy數(shù)組操作來(lái)訪問(wèn)數(shù)據(jù)和子數(shù)組,以及分割、重新塑造和連接數(shù)組的示例。

      首先是調(diào)用Numpy包及查看版本

      import numpy
      numpy.__version__

      另外常用簡(jiǎn)寫命令調(diào)用

      import numpy as np

      一、構(gòu)建數(shù)組

      1.1 從python列表中創(chuàng)建數(shù)組

      與python list不同,Numpy要求數(shù)組中的數(shù)據(jù)格式必須保持一致,否則將會(huì)自動(dòng)轉(zhuǎn)換。下面是一些例子

      np.array([3.14, 4, 2, 3])
      out: array([ 3.14, 4. , 2. , 3. ])
      np.array([1,'2',3,4])
      out: array(['1', '2', '3', '4'], dtype='<U21')

      可以通過(guò)dtype定義

      np.array([1, 2, 3, 4], dtype='float32')

      另外,不同于python list,Numpy數(shù)組可以是多維數(shù)據(jù)。

      1.1 Numpy常用命令創(chuàng)建數(shù)組

      np.zeros()  創(chuàng)建含0數(shù)組

      np.ones() 創(chuàng)建 含1數(shù)組

      np.full() 創(chuàng)建包含同樣元素的數(shù)組

      np.arange()及np.linspace()構(gòu)建等差數(shù)列的數(shù)組

      np.random.random() 、np.random.normal()、np.random.randint()創(chuàng)建由隨機(jī)數(shù)構(gòu)成數(shù)組。

      NumPy標(biāo)準(zhǔn)數(shù)據(jù)類型

      二、Numpy數(shù)組基礎(chǔ)操作

      基礎(chǔ)的數(shù)組操作包括:

      • Attributes of arrays(數(shù)組屬性):決定了數(shù)組大小、形狀、內(nèi)存好用及數(shù)據(jù)類型等

      • Indexing of arrays(數(shù)組索引):可獲取或設(shè)置單個(gè)數(shù)組元素的值

      • Slicing of arrays(數(shù)組切片):在大數(shù)組中獲取或設(shè)置小數(shù)組

      • Reshaping of arrays(數(shù)組重構(gòu)): 改變數(shù)組形狀(shape)

      • Joining and splitting of arrays(合并及分割數(shù)組):合并多個(gè)數(shù)組,或?qū)?shù)據(jù)拆分成多個(gè)

      2.1 數(shù)組常見屬性

      ndim (the number of dimensions), shape (the size of each dimension), size (the total size of the array), and dtype(the data type of the array).

      其他常見屬性還包含itemsize(lists the size (in bytes) of each array element), 以及nbytes(lists the total size (in bytes) of the array).

       

      2.2 數(shù)組索引--訪問(wèn)數(shù)組元素

      針對(duì)多維數(shù)組

      可以通過(guò)數(shù)組索引改變?cè)刂?,要注意修改后的?shù)據(jù)屬性要與原數(shù)據(jù)保持一致,否則會(huì)報(bào)錯(cuò)或數(shù)據(jù)自動(dòng)調(diào)整至與原數(shù)組元素屬性一致。


      2.3 數(shù)組切片--訪問(wèn)子數(shù)組

      運(yùn)行模式:x[start:stop:step]

      一維數(shù)組

      多維數(shù)組

      直接賦值給新數(shù)組 x=y, 改變其中一個(gè)數(shù)組的元素,另一個(gè)數(shù)組也會(huì)相應(yīng)進(jìn)行變化。用x=y.copy(),改變一個(gè)數(shù)組元素不會(huì)引起另一個(gè)數(shù)組的變化。


      2.4 數(shù)組重構(gòu)

      數(shù)據(jù)重構(gòu)可通過(guò)reshape命令實(shí)現(xiàn),具體參照如下示例:

       


      2.5 數(shù)組合并及拆分

      2.5.1數(shù)組合并常用函數(shù)

      np.concatenate, np.vstack(vertical stack), and np.hstack(horizontal stack) , np.concatenate(數(shù)組維度必須一致)

      np.vstack()、np.hstack()、np.dstack()

      2.5.2 數(shù)組拆分常用函數(shù)

      np.split, np.hsplit, and np.vsplit,示例如下:

      如上面示例,split會(huì)依據(jù)所給的N個(gè)分割點(diǎn),產(chǎn)生N+1個(gè)子數(shù)組。np.hsplit、np.vsplit使用方法類似,np.hsplit案列進(jìn)行切割,np.vsplit暗行進(jìn)行切割。

       三、Numpy函數(shù)

      3.1 常用算數(shù)函數(shù)

          如下表格中列出了一些常用的算術(shù)函數(shù)

      求絕對(duì)值:np.absolute() or np.abs()

      求對(duì)數(shù)計(jì)算:np.log()、np.log2()、np.log10()

      下文中以一些例子來(lái)說(shuō)明這些函數(shù)的使用

      1)指數(shù)計(jì)算

      2)對(duì)數(shù)計(jì)算

      3.2 三角函數(shù)

      3.3 總計(jì)(Aggregations)

      1)reduce方法  reduce方法對(duì)數(shù)組的元素進(jìn)行給定的重復(fù)操作,直到得到一個(gè)結(jié)果。

      上圖中例子分別實(shí)現(xiàn)x中元素累加或累乘。

      2) accumulate方法  accumulate方法與reduce方法類似,但可以保留每個(gè)中間結(jié)果。

      *以上方法的替代函數(shù)np.sum, np.prod, np.cumsum, np.cumprod

      3)其他常用統(tǒng)計(jì)函數(shù)


      四、Numpy Broadcasting

          廣播(Broadcast)是 numpy 對(duì)不同形狀(shape)的數(shù)組進(jìn)行數(shù)值計(jì)算的方式, 對(duì)數(shù)組的算術(shù)運(yùn)算通常在相應(yīng)的元素上進(jìn)行。如果計(jì)算中的兩個(gè)數(shù)組 a 和 b 形狀相同,那么 a*b 的結(jié)果就是 a 與 b 數(shù)組對(duì)應(yīng)位相乘。這要求維數(shù)相同,且各維度的長(zhǎng)度相同。如果2 個(gè)數(shù)組的形狀不同時(shí),numpy 將自動(dòng)觸發(fā)廣播機(jī)制。下面是幾個(gè)例子:

      例1)

      例2)

      例3)

      以上示例的圖示原理如下:

      根據(jù)以上例子,我們可以總結(jié)出Numpy 廣播所遵循的規(guī)則如下:

      • 讓所有輸入數(shù)組都向其中形狀最長(zhǎng)的數(shù)組看齊,形狀中不足的部分都通過(guò)在前面加 1 補(bǔ)齊。

      • 輸出數(shù)組的形狀是輸入數(shù)組形狀的各個(gè)維度上的最大值。

      • 如果輸入數(shù)組的某個(gè)維度和輸出數(shù)組的對(duì)應(yīng)維度的長(zhǎng)度相同或者其長(zhǎng)度為 1 時(shí),這個(gè)數(shù)組能夠用來(lái)計(jì)算,否則出錯(cuò)。

      • 當(dāng)輸入數(shù)組的某個(gè)維度的長(zhǎng)度為 1 時(shí),沿著此維度運(yùn)算時(shí)都用此維度上的第一組值。

      六、Numpy 比較與布爾邏輯

        6.1 比較操作符

         第四部分中我們介紹了Numpy常用的加減計(jì)算。除了常規(guī)的算術(shù)運(yùn)算外,Numpy同時(shí)還能實(shí)現(xiàn)比較操作,如<(小于)和>(大于)等,這些比較運(yùn)算通常會(huì)得到是一個(gè)布爾數(shù)據(jù)類型的數(shù)組。

      常用的6項(xiàng)比較操作符如下:

      下面是一個(gè)二維數(shù)組運(yùn)算示例

      6.2 布爾數(shù)組操作

      6.2.1 統(tǒng)計(jì)布爾數(shù)組中真值

      •  np.count_nonzero()、np.sum()計(jì)算布爾數(shù)據(jù)組“True”值的數(shù)目

      還可以按照行或列進(jìn)行統(tǒng)計(jì)

      •  np.any()可用于快速檢測(cè)是否有值為真;np.all()可以分別用于判斷是否所有值都為真

      6.2.2 布爾數(shù)組操作

      6.2.3 布爾數(shù)組作為掩碼

          可以使用布爾數(shù)組作為掩碼,來(lái)篩選數(shù)據(jù)本身的特定子集。masking操作返回的是一個(gè)一維數(shù)組,其中包含滿足此條件的所有值,換句話說(shuō),掩碼數(shù)組包含True的位置上的所有值。示例如下:

      6.2.4 and /or與&/| 的區(qū)別

          有一個(gè)比較容易混淆的點(diǎn)是and和or與操作符&和|之間的區(qū)別,兩類的區(qū)別在于and和or對(duì)整個(gè)對(duì)象執(zhí)行一個(gè)布爾值計(jì)算,而&和|對(duì)對(duì)象的內(nèi)容(單個(gè)位或字節(jié))執(zhí)行多個(gè)布爾值計(jì)算。

      類似地,當(dāng)對(duì)給定數(shù)組執(zhí)行布爾表達(dá)式時(shí),應(yīng)該使用| 或 &而不是or或 and。

      七、復(fù)雜索引(Fancy Indexing)

      7.1 復(fù)雜索引介紹

          復(fù)雜索引的概念很簡(jiǎn)單:它意味著利用索引數(shù)組來(lái)同時(shí)訪問(wèn)多個(gè)數(shù)組元素。花式索引根據(jù)索引數(shù)組的值作為目標(biāo)數(shù)組的某個(gè)軸的下標(biāo)來(lái)取值。對(duì)于使用一維整型數(shù)組作為索引,如果目標(biāo)是一維數(shù)組,那么索引的結(jié)果就是對(duì)應(yīng)位置的元素;如果目標(biāo)是二維數(shù)組,那么就是對(duì)應(yīng)下標(biāo)的行,如下圖示例。

      7.2 組合索引

      我們還可以將花式索引與切片結(jié)合起來(lái)使用

      7.3 利用花式索引改變數(shù)值

      八、數(shù)組排序

      8.1 利用np.sort 及 np.argsort進(jìn)行快速排序

      Numpy 數(shù)據(jù)排序常用兩個(gè)函數(shù):np.sort  & np.argsort。np.sort可在不修改輸入的情況下返回?cái)?shù)組的排序結(jié)果。

      如果你希望直接對(duì)數(shù)組進(jìn)行排序,可以使用sort方法:

      此外argsort反饋排序后的index值,如下示例:

      8.2 按照行/列進(jìn)行數(shù)組排序

      按列對(duì)數(shù)組進(jìn)行排序

      按行對(duì)數(shù)組進(jìn)行排序

      8.3 部分排序

      np.partition輸入為數(shù)組及k(元素?cái)?shù)目),會(huì)將最小的k個(gè)元素放在數(shù)組左側(cè),其余元素放在另一側(cè)。如下示例:


       參考資料:

        1.Python Data Science Handbook

        2.NumPy 教程

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多