數(shù)值計算工具—Numpy模塊

雖然之前介紹了有關(guān)存儲數(shù)據(jù)的列表對象,但是其無法直接參與數(shù)值計算(雖然可以使用加法和乘法,但分別表示列表元素的增加和重復(fù))。在此介紹另一種數(shù)據(jù)結(jié)構(gòu)--數(shù)組,通過數(shù)組可以實現(xiàn)各種常見的數(shù)學(xué)運(yùn)算。

一、數(shù)組的創(chuàng)建與操作

1.數(shù)組的創(chuàng)建

Numpy模塊的array函數(shù)可以實現(xiàn)數(shù)組的創(chuàng)建,在二維數(shù)組中,當(dāng)輸入元素有整數(shù)型也有浮點(diǎn)型時,輸出統(tǒng)一被轉(zhuǎn)換為浮點(diǎn)型(數(shù)組元素的同質(zhì)性)


2.數(shù)組元素的獲取

列表中的正向,負(fù)向,切片,無限無法完成不規(guī)律元素的獲取,如果把列表換為數(shù)組即可



numpy.ix_ :構(gòu)造數(shù)組索引的函數(shù)

3.數(shù)組的常用屬性

通過genfromtxt函數(shù)讀取外部文件,主要為csv和txt


4.數(shù)組的形狀處理

區(qū)分reshape與resize的區(qū)別

5.數(shù)組降維(降為一維)的三種方法


但是,flatten返回的是復(fù)制,對降維后的元素做修改,并沒有影響到原數(shù)組;相反,ravel與reshape返回的是視圖,對降維后的元素做修改,影響到原數(shù)組arr4,即arr4被改變

6.數(shù)組堆疊的四種方法


如果是多個數(shù)組的縱向堆疊,必須保證每個數(shù)組的列數(shù)相同;如果將多個數(shù)組按橫向合并的話,則必須保證每個數(shù)組的行數(shù)相同。

二、數(shù)組的基本運(yùn)算符

1.數(shù)組的四則運(yùn)算


關(guān)于減法(-)和乘法(*),對應(yīng)的模塊函數(shù)分別為np.subtract和np.multiply

函數(shù)只能接受兩個對象的運(yùn)算,如果需要多個,則需要使用嵌套

不管是符號方法還是函數(shù)方法,都必須保證操作的數(shù)組具有相同的形狀,即數(shù)組大小相等


這三種運(yùn)算符所對應(yīng)的函數(shù)分別為np.fmod,np.modf,np.power,但整除的函數(shù)需要寫作np.modf(arr7/arr8)[1],因為modf可以返回數(shù)值的小數(shù)部分和整數(shù)部分,而整數(shù)部分就是要取的值

2.數(shù)組的比較運(yùn)算

比較運(yùn)算符可以返回bool類型的值,即True和False

一般有兩種情況需要用到比較運(yùn)算符,一個是從數(shù)組中查詢滿足條件的元素,另一個是根據(jù)判斷的結(jié)果執(zhí)行不同的操作。




其中where類似于Excel的if函數(shù)

3.數(shù)組的廣播運(yùn)算

前面兩種運(yùn)算都是基于相同形狀的數(shù)組,當(dāng)數(shù)組形狀不同時,也能夠進(jìn)行數(shù)學(xué)運(yùn)算的功能稱為數(shù)組的廣播,即不同大小的數(shù)組之間的運(yùn)算稱為廣播,但是數(shù)組有確定的廣播規(guī)則:

① 各輸入數(shù)組的維度可以不相等,但必須確保從右到左的對應(yīng)維度值相等

② 如果對應(yīng)維度值不相等,就必須保證其中一個為1

③ 各輸入數(shù)組都向其shape最長的數(shù)組看齊,shape中不足的部分都通過在前面加1補(bǔ)齊

np.arange()函數(shù),range的numpy版,支持浮點(diǎn)數(shù)

分為一個參數(shù),兩個參數(shù),三個參數(shù)三種情況

1)一個參數(shù)時,參數(shù)值為終點(diǎn),起點(diǎn)取默認(rèn)值0,步長取默認(rèn)值1。

2)兩個參數(shù)時,第一個參數(shù)為起點(diǎn),第二個參數(shù)為終點(diǎn),步長取默認(rèn)值1。

3)三個參數(shù)時,第一個參數(shù)為起點(diǎn),第二個參數(shù)為終點(diǎn),第三個參數(shù)為步長。其中步長支持小數(shù)。


二維數(shù)組和二維數(shù)組的和,此時沒有用到廣播,即1+100=101;2+101=103;3+102=105...


三維數(shù)組和二維數(shù)組的和,雖然維數(shù)不一樣,但末尾的兩個維度值一樣,則最終得到5乘4乘3的數(shù)組



兩個數(shù)組維數(shù)和維度值均不一樣,但末尾的兩個維度值必須含一個1,且另一個必須相同,都為4,相加之后為5乘4乘3的數(shù)組


4乘3的二維數(shù)組和(3,)的一維數(shù)組的和,維度不一致,自動將(3,)的一維數(shù)組補(bǔ)齊為(1,3)的二維數(shù)組,進(jìn)而得4乘3的數(shù)組

三、常用數(shù)學(xué)函數(shù)與統(tǒng)計函數(shù)

1.數(shù)學(xué)函數(shù)

2.統(tǒng)計函數(shù)


axis參數(shù)的目的是在統(tǒng)計數(shù)組元素時按照不同的軸方向計算,如果axis=1,按水平方向計算統(tǒng)計值,即計算每一行的統(tǒng)計值;axis=0,按垂直方向計算統(tǒng)計值,即計算每一列的統(tǒng)計值


四、線性代數(shù)的相關(guān)計算

需要先調(diào)用Numpy的子模塊linalg

1.有關(guān)線性代數(shù)的重要函數(shù)

2.矩陣乘法


點(diǎn)積函數(shù)用在兩個一維數(shù)組,實際上計算兩個向量的乘積,是一個標(biāo)量;
用在兩個二維數(shù)組中,實際上是矩陣的乘法,要求第一個矩陣的列數(shù)等于第二個矩陣的行數(shù)

3.diag函數(shù)的使用


給diag函數(shù)傳入的是二維數(shù)組,則返回由主對角元素構(gòu)成的一維數(shù)組;
如果傳入的是一個一維數(shù)組,則返回方陣

4.特征根與特征向量


元祖的第一個元素是特征根,第二個元素是每個特征根對應(yīng)的特征向量

5.多元一次方程組的求解


6.范數(shù)的計算

范數(shù)常常用來度量某個向量空間(或矩陣)中的每個向量的長度或大小,具有三方面的約束條件,分別是非負(fù)性、其次性和三角不等性
![](https://upload-images.jianshu.io/upload_images/15866579-0c8325704d54ff2d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
向量的無窮范數(shù)是指從向量中挑選出絕對值最大的元素

五、偽隨機(jī)數(shù)的生成

需使用numpy模塊中的子模塊random



其他分布的隨機(jī)數(shù)略

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容