---恢復內容開始---
區別:
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]
---恢復內容結束---