- 生成矩阵
python主要依赖第三方库numpy,其中np.array和np.mat有区别,主要体现在:
- 生成矩阵所需格式不同
np.mat可以从字符串或列表中生成,而np.array只能从列表中生成。
代码语言:javascript复制
import numpy as np
a = np.mat("1,2; 3,4") #字符串生成2x2矩阵
b = np.mat([ [5,6], [7,8] ]) #列表生成2x2矩阵
c = np.array([ [2,6], [5,8] ])
- 生成的数组运算方式不同
np.array生成矩阵,用np.dot()表示矩阵乘法,星号(*)或np.multiply()表示点乘(对应元素相乘)。
代码语言:javascript复制
import numpy as np
a = np.array([ [1, 1], [1, 1] ])
b = np.array([ [2, 2], [2, 2] ])
c = np.dot(a, b) #矩阵乘法
d = np.multiply(a, b) #对应元素相乘
e = a*b #对应元素相乘
np.mat生成矩阵,星号(*)和np.dot()表示矩阵乘法,np.multiply()表示点乘(对应元素相乘)。
代码语言:javascript复制
import numpy as np
a = np.mat([[1, 1], [1, 1]])
b = np.mat([[2, 2], [2, 2]])
c = a*b #矩阵乘法
d =np.dot(a, b) #矩阵乘法
e = np.multiply(a, b) #对应元素相乘
- 矩阵索引
用a[0][0]访问矩阵a中第一行第一列元素,注意索引值从0开始。
- 解方程组
用np.linalg.solve(A, b)解方程组Ax=b,例如
代码语言:javascript复制##方程组Ax=b的解
import numpy as np
A =np.array( [ [6, -1.5, 1], [-1.5, 1.875, -1.5], [1, -1.5, 2] ])
b = np.array( [ 30, -10, 0 ] )
x = np.linalg.solve(A, b)
print("Solution", x)
C 的数值计算类可以用第三方数值计算库,比如Eigen, BLAS等。