一、矩陣生成
1、numpy.matrix:
1 import numpy as np 2 3 x = np.matrix([ [1, 2, 3],[4, 5, 6] ]) 4 y = np.matrix( [1, 2, 3, 4, 5, 6]) 5 6 print(x, y, x[0, 0], sep='\n\n') 7 8 matrix([[1, 2, 3] 9 [4, 5, 6]]) 10 11 [[1 2 3 4 5 6]] 12 13 1 14 15 [[1 2 3]]
2、numpy.matlib.empty( shape, dtype, order)
- shape:定義新矩陣形狀的整數或整數元組
- dtype:數據類型,可選。
- order:C(行序優先)或F(列序優先)
import numpy.matlib import numpy as np print (np.matlib.empty((2,2))) #輸出一個填充為隨機數的2行2列的矩陣
3、numpy.matlib.zeros() numpy.matlib.ones()
1 import numpy.matlib 2 import numpy as np 3 4 print (np.matlib.zeros((2, 2))) #輸出一個全為0的2行2列矩陣 5 print (np.matlib.ones((2, 2))) #輸出一個全為1的2行2列矩陣
4、numpy.matlib.eye()
返回一個對角元素為1,其他位置為0的矩陣,當M=n時為單位矩陣。
1 #numpy.matlib.eye( n, M, k, dtype) 2 '''n:返回矩陣的行數 3 M:返回矩陣的列數,默認為n 4 k:對角線的索引 5 dtype:數據類型 ''' 6 7 import numpy.matlib 8 import numpy as np 9 10 print (np.matlib.eye(n = 3, M = 4, k = 0, dtype = int) 11 12 [[1 0 0 0] 13 [0 1 0 0] 14 [0 0 1 0]]
5、numpy.matlib.identity()
返回給定大小的單位矩陣。單位矩陣是一個方針,其左上角到右下角的對角線上的元素均為1,其余位置全為0。
1 import numpy.matlib 2 import numpy as np 3 4 print (np.matlib.identity(4, dtype = int)) #輸出4*4的單位矩陣
6、numpy.matlib.rand()
創建一個給定大小的、數據是隨機填充的矩陣。
import numpy.matlib import numpy as np print (np.matlib.rand(4, 4)) #輸出一個4*4的矩陣
二、矩陣常用操作
1、矩陣與二維數組相互轉換
矩陣總是二維的,ndarray是一個n維數組,可以用如下代碼使其相互轉換
1 import numpy.matlib 2 import numpy as np 3 4 a = np.matrix('1,2;3,4') #創建一個2*2矩陣a 5 print(a) #輸出矩陣a 6 b = np.asarray(a) #將矩陣a轉換為2維數組b 7 print(b) #輸出數組b 8 c = np.asmatrix(b) #將數組b轉換為矩陣c 9 print(c) #輸出矩陣c
代碼中的三個print輸出的結果均為 [[1 2]
[3 4]]
2、矩陣轉置
import numpy as np a = np.matrix([1, 2],[3, 4]]) print(a.T) #輸出a的轉置矩陣
3、查看矩陣特征
1 import numpy as np 2 3 x = np.matrix([[1, 2, 3],[4, 5, 6]]) 4 5 print(x.mean()) #輸出所有元素平均值 6 7 print(x.mean(axis=0)) #輸出縱向平均值 8 9 print(x.mean(axis=1)) #輸出橫向平均值 10 11 print(x.sum()) #輸出所有元素之和 12 13 print(x.max(axis=1)) #輸出橫向最大值 14 15 print(x.argmax(axis=1)) #輸出橫向最大值的下標 16 17 print(x.diagonal()) #輸出對角線元素
4、矩陣乘法
矩陣乘法可直接使用*連接兩個矩陣
import numpy as np x = np.matrix([[1, 2, 3],[4, 5, 6]]) y = np.matrix([[1, 2],[3, 4],[5, 6]]) print(x*y)
輸出結果為
[[22 28]
[49 64]]
5、numpy,linalg函數
- diag:以一維數組的形式返回方陣的對角線元素,或將一維數組轉換為方陣(非對角線元素為0)
- dot:矩陣乘法
- trace:計算對角線元素的和
- det:計算矩陣行列式
- eig:計算方陣的特征值和特征向量
- inv:計算方陣的逆
- svd:計算奇異值分解(SVD)
- solve:解線性方程組Ax=b,其中A為一方陣
- lstsq:計算Ax=b的最小二乘解
1 #numpy.dot()演示 2 import numpy.matlib 3 import numpy as np 4 5 a = np.array([[1, 2],[3, 4]]) 6 b = np.array([[11, 12],[13, 14]]) 7 8 print(np.dot(a,b)) 9 10 #輸出結果為 11 [[37 40] 12 [85 92]]
