numpy中的線性代數
阿新 • • 發佈:2020-08-13
"""線性代數""" import numpy as np # dot 兩個陣列的點積,即矩陣乘積 a = np.array([[1, 2], [3, 4]]) b = np.array([[11, 12], [13, 14]]) print(a) print(b) print(np.dot(a, b)) # [[37 40] # [85 92]] # vdot 兩個向量的點積 print(np.vdot(a, b)) # 130 # 1*11 + 2*12 + 3*13 + 4*14 = 130 # inner 兩個陣列的內積 print(np.inner(np.array([1, 2, 3]), np.array([0, 1, 0]))) # 2 # 等價於 1*0+2*1+3*0 print(np.inner(a, b)) # 1*11+2*12, 1*13+2*14 # 3*11+4*12, 3*13+4*14 # [[35 41] # [81 95]] # matmul 兩個陣列的矩陣積 print(np.matmul(a, b)) # [[37 40] # [85 92]] # 二維和一維運算 a = [[1, 1], [2, 2]] b = [1, 2] print(np.matmul(a, b)) # [3 6] print(np.matmul(b, a)) # [5 5] # 維度大於二的陣列 a = np.arange(8).reshape(2, 2, 2) b = np.arange(4).reshape(2, 2) print(a) print(b) print(np.matmul(a, b)) # determinant 陣列的行列式, numpy.linalg.det() 函式計算輸入矩陣的行列式 b = np.array([[6, 1, 1], [4, -2, 5], [2, 8, 7]]) print(b) print(np.linalg.det(b)) print(6 * (-2 * 7 - 5 * 8) - 1 * (4 * 7 - 5 * 2) + 1 * (4 * 8 - -2 * 2)) # solve 求解線性矩陣方程 # x + y + z = 6 # 2y + 5z = -4 # 2x + 5y - z = 27 a = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]]) b = np.array([6, -4, 27]) print(np.linalg.solve(a, b)) # [ 5. 3. -2.] # inv 計算矩陣的乘法逆矩陣 # AX = B => X = A的逆B a = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]]) print(a) ainv = np.linalg.inv(a) print('a 的逆:') print(ainv) print('矩陣 b:') b = np.array([[6], [-4], [27]]) print(b) print('計算:A^(-1)B:') x = np.linalg.solve(a, b) print(x)