免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
python科學計算-Numpy包使用

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

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

import numpy
numpy.__version__

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

import numpy as np

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

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

與python list不同,Numpy要求數(shù)組中的數(shù)據(jù)格式必須保持一致,否則將會自動轉(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')

可以通過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)建由隨機數(shù)構(gòu)成數(shù)組。

NumPy標準數(shù)據(jù)類型

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

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

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

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

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

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

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

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ù)組索引--訪問數(shù)組元素

針對多維數(shù)組

可以通過數(shù)組索引改變元素值,要注意修改后的數(shù)據(jù)屬性要與原數(shù)據(jù)保持一致,否則會報錯或數(shù)據(jù)自動調(diào)整至與原數(shù)組元素屬性一致。


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

運行模式:x[start:stop:step]

一維數(shù)組

多維數(shù)組

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


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

數(shù)據(jù)重構(gòu)可通過reshape命令實現(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會依據(jù)所給的N個分割點,產(chǎn)生N+1個子數(shù)組。np.hsplit、np.vsplit使用方法類似,np.hsplit案列進行切割,np.vsplit暗行進行切割。

 三、Numpy函數(shù)

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

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

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

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

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

1)指數(shù)計算

2)對數(shù)計算

3.2 三角函數(shù)

3.3 總計(Aggregations)

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

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

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

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

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


四、Numpy Broadcasting

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

例1)

例2)

例3)

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

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

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

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

  • 如果輸入數(shù)組的某個維度和輸出數(shù)組的對應維度的長度相同或者其長度為 1 時,這個數(shù)組能夠用來計算,否則出錯。

  • 當輸入數(shù)組的某個維度的長度為 1 時,沿著此維度運算時都用此維度上的第一組值。

六、Numpy 比較與布爾邏輯

  6.1 比較操作符

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

常用的6項比較操作符如下:

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

6.2 布爾數(shù)組操作

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

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

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

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

6.2.2 布爾數(shù)組操作

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

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

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

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

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

七、復雜索引(Fancy Indexing)

7.1 復雜索引介紹

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

7.2 組合索引

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

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

八、數(shù)組排序

8.1 利用np.sort 及 np.argsort進行快速排序

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

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

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

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

按列對數(shù)組進行排序

按行對數(shù)組進行排序

8.3 部分排序

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


 參考資料:

  1.Python Data Science Handbook

  2.NumPy 教程

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python 數(shù)據(jù)分析基礎包:Numpy
Numpy基礎筆記
NumPy基礎(附思維導圖)
NumPy入門(三)
Pandas和NumPy的比較
收藏&下載 | 最全的NumPy 教程,沒有之一
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服