矩阵和向量积
numpy.dot(a, b[, out])
// 计算两个矩阵的乘积,如果是一维数组则是它们的内积。
矩阵特征值与特征向量
numpy.linalg.eig(a)
// 计算方阵的特征值和特征向量。
numpy.linalg.eigvals(a)
// 计算方阵的特征值。
矩阵分解
奇异值分解
u, s, v = numpy.linalg.svd(a, full_matrices=True, compute_uv=True, hermitian=False)
// 奇异值分解
- a 是一个形如(M,N)矩阵
- full_matrices的取值是为False或者True,默认值为True,这时u的大小为(M,M),v的大小为(N,N)。否则u的大小为(M,K),v的大小为(K,N) ,K=min(M,N)。
- compute_uv的取值是为False或者True,默认值为True,表示计算u,s,v。为False的时候只计算s。
- 总共有三个返回值u,s,v,u大小为(M,M),s大小为(M,N),v大小为(N,N),a = usv。
- 其中s是对矩阵a的奇异值分解。s除了对角元素不为0,其他元素都为0,并且对角元素从大到小排列。s中有n个奇异值,一般排在后面的比较接近0,所以仅保留比较大的r个奇异值。
- Numpy中返回的v是通常所谓奇异值分解a=usv’中v的转置
QR分解
q,r = numpy.linalg.qr(a, mode='reduced')
// 计算矩阵a的QR分解。
- a是一个(M, N)的待分解矩阵。
- mode = reduced:返回(M, N)的列向量两两正交的矩阵q,和(N, N)的三角阵r(Reduced QR分解)。
- mode = complete:返回(M, M)的正交矩阵q,和(M, N)的三角阵r(Full QR分解)。
Cholesky分解
L = numpy.linalg.cholesky(a)
// 返回正定矩阵a的 Cholesky 分解a = L*L.T,其中L是下三角。
范数和其它数字
矩阵的范数
numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)
//
![https://github.com/datawhalechina/team-learning-program/blob/master/IntroductionToNumpy/task09%20%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/13.%20%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0..ipynb](https://i-blog.csdnimg.cn/blog_migrate/4b91ed15f67e693791087cc7f8a59ff2.png)
方阵的行列式
numpy.linalg.det(a)
// 计算行列式。
矩阵的秩
numpy.linalg.matrix_rank(M, tol=None, hermitian=False)
// 返回矩阵的秩。
矩阵的迹
numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
// 方阵的迹就是主对角元素之和。
解方程和逆矩阵
逆矩阵
numpy.linalg.inv(a)
// 计算矩阵a的逆矩阵(矩阵可逆的充要条件:det(a) != 0,或者a满秩)。
求解线性方程组
numpy.linalg.solve(a, b)
// 求解线性方程组或矩阵方程。