雖然之前介紹了有關(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ù)性、其次性和三角不等性

向量的無窮范數(shù)是指從向量中挑選出絕對值最大的元素
五、偽隨機(jī)數(shù)的生成
需使用numpy模塊中的子模塊random

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