矩陣和數組的區別


---恢復內容開始---

區別:

1.數組中的元素可以是字符或字符串,而矩陣只能是數

2.數學計算的區別。矩陣直接用*號相乘,而數組需用.dot()

3.array更靈活,不僅能表示1維、2維,還能表示多維數據,運算速度也更快。

4.矩陣顯示時,元素間無逗號;數組顯示時,元素間用逗號隔開

一.矩陣(matrix)

矩陣是數組的特殊形式,

 1.1 矩陣構建

mat函數

如data1=mat(ones((2,4)))

即構建一個2行4列的全為1的矩陣

data2=mat(random.randint(2,8,size=(2,5))),即生成一個2至8之間的隨機整數矩陣,矩陣維度為2行5列。 注意,random與rand的區別在於返回類型不同,rand是int類型,而random是long int類型

data3=mat(diag([1,2,3])),即生成一個對角矩陣

2.矩陣計算

a1*a2 矩陣相乘
multiply(a1,a2) 矩陣點乘
a1.T 矩陣求轉置
a1.I 矩陣求逆

2.1矩陣行列操作

a1.sum(axis=0),求每列和

a1.max(),求矩陣中最大元素

a1[1,:].max(),計算第二行中最大值

np.max(a1,0),計算所有列的最大值,使用numpy中的max函數

np.argmax(a1,0),計算所有列的最大值對應在該列的索引

 

二.數組(array)

2.1數組的構建

np.zeros((m,n)) 創建m行n列全為0的數組
np.ones((m,n)) 創建m行n列全為1的數組
np.full((m,n),a) 創建m行n列全為a的數組
np.eye(n) 創建n行n列的單位數組
array([a1,a2...an]) 將輸入數據存為數組格式

array()函數存為數組格式時,要注意是將列表作為一個元素存入。   

2.1.1  一維數組

a = array([1,2,3,4])

輸出為[1 2 3 4],一維數組

2.1.2.   二維數組

a =  array( [ (1.5,2,3), (4,5,6) ] )

輸出為

[[1.5 2. 3. ]
[4. 5. 6. ]]

2.2數組的屬性

numpy數組類被稱作ndarray,該對象有如下屬性

ndarray.ndim 數組軸的個數,即秩
ndarray.shape 數組的維度
ndarray.size 數組元素的個數
ndarray.dtype 數組元素類型
ndarray.itemsize 數組每個元素大小

2.3 數組的基本計算

數組的算數運算是按元素計算的。

2.3.1  減法

要么兩個數組維數相同,要么減數維數為1(相當於常數)

a=array([20,30,40,50])
b=array([4])
c=a-b

輸出結果c為[16 26 36 46],數組中每個元素都減去4

a=array([20,30,40,50])
b=array([1,2,3,4])
c=a-b

輸出結果c為[19 28 37 46],a中元素減去b中對應元素

2.3.2  乘法

與減法相類似,以元素為單位計算

a=array([20,30,40,50])
b=array([1,2,3,4])
c=a*b

輸出結果c為[ 20  60 120 200]

若想實現矩陣乘法,則用dot()

a=array([20,30,40,50])
b=array([[1],[2],[3],[4]])
d=dot(a,b)

輸出結果d為[400],為1維數組,滿足矩陣乘法規則

注意:!!!以上運算均不改變原數組,所得結果創建在一個新數組中。

但是+=,*=等操作將直接對原數組進行修改。

當進行運算的數組類型不同時,以最精確的為主。如整型數組與浮點型數組做運算,所得結果為浮點型數組

2.4   數組的軸運算

指定axis參數,可對數組執行軸運算,

axis=0,列運算

axis=1,行運算

a.sum(axis=0) 每列和,返回一個一維數組,每個元素表示該列所有元素和
a.max(axis=0) 每列最大元素,返回一個一維數組,每個元素表示該列最大值
a.cumsum(axis=0) 每列疊加和,返回一個與原數組同等維數的數組,每個元素表示之前所有列元素和
a=array([[20,30,40,50],
         [1,2,3,4],
         [5,6,7,8]])
b=a.cumsum(axis=0)

輸出結果b為

[[20 30 40 50]
[21 32 43 54]
[26 38 50 62]]

即21表示20+1,32表示30+2。。。。

2.5   數組的切片及索引

2.5.1   索引

a=array([[20,30,40,50],
         [1,2,3,4],
         [5,6,7,8]])
print(a[1][2])

輸出結果為3,即第2行第3列元素

 2.5.2  切片

切片操作,含首不含尾。如0-3,則取0,1,2三個元素

 也支持倒着切片,如-1,則為最后一個元素,-3~-1,即為倒數第3個元素和倒數第2個元素。

切片也可以設置間隔,如每兩個取一個,即L[0:10:2]

 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM