python的基礎知識總結
使用到了numpy庫,所以第一步需要
import numpy as np
1.創建矩陣
1.1一般矩陣的創建
創建一個二維的矩陣,並使用ndim、shape、size分別獲取矩陣的維度,大小,元素個數。
# 1)創建矩陣 a1 = np.array([[1,2,3], [2,3,4]]) print("矩陣a1:\n",a1) print("number of dimension:",a1.ndim) print("shape:",a1.shape) print('size:',a1.size) # matrix 方式創建 a3 = np.matrix([[1,2,3], [4,5,6]]) print("a3:\n",a3) # mat方式 from numpy import * data1 = mat(zeros((3,3)))#創建一個3*3的零矩陣 data2 = mat(ones( (2,4)) ) #創建一個 全1矩陣 data3 = mat(random.rand(2,2)) #這里的random模塊使用的是numpy中的random模塊,random.rand(2,2)創建的是一個二維數組,需要將其轉換成#matrix data4 = mat(random.randint(10,size=(3,3))) # 10以內的隨機3*3 矩陣 data5 = mat(random.randint(2,8,size=(2,6))) # 產生一個2-8之間隨機整數的矩陣 data6 = mat(eye(2,2,dtype=int)) #產生一個2*2 的對角矩陣 # 對角矩陣 b = [1,2,3] b1 = mat(diag(b)) # 生成一個對角線為1 2 3 的對角矩陣 print("對角矩陣為:\n",b1)
1.2特殊矩陣的創建
import numpy as np # 特殊矩陣的創建 # numpy 的類型 arange有序數列 linspace的使用 a = np.array([2,3,4],dtype=np.int32) print(a.dtype) b = np.arange(10,20,2) print(b) c = np.arange(12).reshape((3,4)) print(c) d1 = np.linspace(1,20,10) print(d1) d2 = np.linspace(1,20,10).reshape((2,5)) print(d2) data1 = np.zeros((3,5)) print("全零矩陣:\n",data1) data2 = np.ones((3,4),dtype=np.int16) print("全一陣:\n",data2) data3 = np.empty((3,4),dtype=np.float32) print("empty:\n",data3)
2.矩陣的運算
# 矩陣的運算 print("# 矩陣的運算:") c1 = mat([1,2,3]) c2 = mat([[1],[2],[3]]) c3 = c1*c2 print("矩陣乘運算結果:",c3) c4 = multiply(c1,c2) print("矩陣對應元素相乘:\n",c4) c5 = c1 * 2 print("矩陣擴大多少倍:",c5) # 矩陣的逆 轉置 print("# matrix 求逆:") d1 =mat(eye(2,2)*0.5) d2 = d1.I #求矩陣得逆矩陣 print("矩陣的逆矩陣為:\n",d2) d3 = d1.T print("矩陣的轉置:\n",d3) # 矩陣的每一列、行的和 d4 = mat([[1,1],[2,3],[4,2]]) d5 = d4.sum(axis=0) #列求和 d6 = d4.sum(axis=1) #行求和 print("列求和:\n",d5) print("行求和:\n",d6) d7 = sum(d4[1,:]) #計算第一行所有列之和 d8 = sum(d4[:,1])# 矩陣行數 0 1 2行 列數 0 1 列 print("注意d4矩陣:",d7) # 2+3=5 print("注意d4矩陣:",d8) # 1+3+2=6 # 計算最大值和最小值 和索引 d9 = d4.max() print("d4 matrix max:",d9) d10 = max(d4[:,1]) #計算第二列的最大值 print("第二列最大值:",d10) #此方法得到的是矩陣 d11 = d4[1,:].max() print("第二列最大值:",d11) # this way calclulate a number d12 = np.max(d4,0) #計算所有列的最大值 print("所有列的最大值:",d12) d13 =np.max(d4,1) #計算所有行的最大值 print("所有行的最大值:\n",d13) d14 = np.argmax(d4,0) #計算所有列的最大值對應的索引 print("所有列最大值對應的索引:\n",d14) d15 = np.argmax(d4[1,:]) # print("第二行最大值對應改行的索引:",d15) e1 = mat([[1,2,3],[4,5,6],[7,8,9]]) e2 = e1[1:,1:] #分割出矩陣第二行,第二列以后的元素 print("矩陣的分割:\n",e2) e3 = mat(ones((2,2))) e4 = mat(eye(2)) e5 = vstack((e3,e4)) #按列合並,增加了行數 print("矩陣列合並:\n",e5) e6 = hstack((e3,e4)) print("矩陣的行合並:\n",e6) f1 = [[1],'hello',3] f2 = array([[1,2,3],[2,3,4]]) dimension = f2.ndim m,n = f2.shape number = f2.size #元素總數 str = f2.dtype #元素的類型 print("矩陣的維數:",dimension) print("矩陣的行數和列數:",m,n) print("矩陣元素總個數:",number) print("元素的類型:",str)
3 矩陣、列表、數組之間轉換
g1 = [[1,2],[3,2],[4,5]] #列表 g2 = array(g1) #將列表轉化為二維數組 g3 = mat(g1) #將列表轉化為矩陣 g4 = array(g3) #將矩陣轉化為數組 g41 = g3.getA() #將矩陣轉化為數組 g5 = g3.tolist() #將矩陣轉化為列表 g6 = g2.tolist() #將數組轉化為列表 print("列表:",g1) print("數組:",g2) print("矩陣:",g3) print("矩陣轉為數組:",g4) print("矩陣轉為數組:",g41) print("矩陣轉化為列表:",g5) print("數組轉化為列表:",g6)