1、矩阵和向量积
矩阵和向量积可以用 numpy.dot()
函数来计算。numpy.dot() 函数的两个参数分别是矩阵和向量。
1)矩阵积
矩阵积是两个矩阵相乘的结果。矩阵积的计算方法是将矩阵的每一行与另一个矩阵的每一列相乘,然后将各个相乘结果相加。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) C = np.dot(A, B) print(C)
2)向量积
向量积是两个向量相乘的结果。向量积的计算方法是将两个向量的每一维度相乘,然后将各个相乘结果相加。
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) c = np.dot(a, b) print(c)
2、矩阵特征值与特征向量
在线性代数中,特征值和特征向量是矩阵的一个重要概念。特征值是矩阵可以对其乘法的标量,而特征向量是特征值对应的向量。Python NumPy 提供了 numpy.linalg.eig()
函数来计算矩阵的特征值和特征向量。numpy.linalg.eig()
函数的返回值是一个元组,第一个元素是特征值,第二个元素是特征向量。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) w, v = np.linalg.eig(A) print(w) print(v)
3、矩阵分解
矩阵分解是将一个矩阵分解为多个矩阵的一种方法。矩阵分解有许多种不同的方法,每种方法都有其不同的应用。
1)奇异值分解
NumPy 提供了 numpy.linalg.svd()
函数来实现奇异值分解。numpy.linalg.svd()
函数的返回值是一个元组,第一个元素是奇异值矩阵,第二个元素是左奇异向量矩阵,第三个元素是右奇异向量矩阵。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) U, Σ, V = np.linalg.svd(A) print(U) print(Σ) print(V)
2)QR分解
QR 分解是将矩阵分解为两个矩阵的一种方法,其中一个矩阵是正交矩阵,另一个矩阵是上三角矩阵。NumPy 提供了 numpy.linalg.qr()
函数来实现 QR 分解。numpy.linalg.qr()
函数的返回值是一个元组,第一个元素是正交矩阵,第二个元素是上三角矩阵。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) Q, R = np.linalg.qr(A) print(Q) print(R)
3)Cholesky分解
Cholesky 分解是将对称正定的矩阵分解为两个下三角矩阵的一种方法。NumPy 提供了 numpy.linalg.cholesky()
函数来实现 Cholesky 分解。numpy.linalg.cholesky()
函数的返回值是一个矩阵,即下三角矩阵 L。
代码如下,
import numpy as np A = np.array([[1, 2], [2, 5]]) L = np.linalg.cholesky(A) print(L)
4、矩阵的范数
在线性代数中,范数是用来衡量向量或矩阵大小的一种方法。范数有许多种不同的定义,每种定义都有其不同的意义。NumPy 中矩阵范数的使用非常简单,只需调用相应的函数即可。numpy.linalg.norm(x, ord=None)
,ord
参数用于指定范数类型
代码如下,
import numpy as np A = np.array([[1, 2, 3, 4], [2, 3, 5, 8], [1, 3, 5, 7], [3, 4, 7, 11]]) print(A) print(np.linalg.norm(A, ord=1)) # 30.0 print(np.max(np.sum(A, axis=0))) # 30 print(np.linalg.norm(A, ord=2)) # 20.24345358700576 print(np.max(np.linalg.svd(A, compute_uv=False))) # 20.24345358700576 print(np.linalg.norm(A, ord=np.inf)) # 25.0 print(np.max(np.sum(A, axis=1))) # 25 print(np.linalg.norm(A, ord='fro')) # 20.273134932713294 print(np.sqrt(np.trace(np.dot(A.T, A)))) # 20.273134932713294
5、方阵的行列式
在线性代数中,行列式是矩阵的一个重要特征,它可以用于计算矩阵的特征值、逆矩阵等。NumPy 提供了 numpy.linalg.det()
函数来计算矩阵的行列式。numpy.linalg.det()
函数的参数是一个矩阵,返回值是矩阵的行列式。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) print(np.linalg.det(A))
6、矩阵的秩
在线性代数中,矩阵的秩是指矩阵中线性无关列向量的最大个数。矩阵的秩可以用于判断矩阵是否可逆、是否满秩等。NumPy 提供了 numpy.linalg.matrix_rank()
函数来计算矩阵的秩。numpy.linalg.matrix_rank()
函数的参数是一个矩阵,返回值是矩阵的秩。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) rank = np.linalg.matrix_rank(A) print(rank)
7、矩阵的迹
在线性代数中,迹是指矩阵对角线元素之和。矩阵的迹可以用于计算矩阵的一些特征值、特征向量等。NumPy 提供了 numpy.trace()
函数来计算矩阵的迹。numpy.trace()
函数的参数是一个矩阵,返回值是矩阵的迹。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) trace = np.trace(A) print(trace)
8、逆矩阵
在线性代数中,逆矩阵是指与原矩阵相乘等于单位矩阵的矩阵。矩阵的逆矩阵可以用于求解线性方程组、计算矩阵的特征值等。NumPy 提供了 numpy.linalg.inv()
函数来计算矩阵的逆矩阵。numpy.linalg.inv()
函数的参数是一个矩阵,返回值是矩阵的逆矩阵。
代码如下,
import numpy as np A = np.array([[1, 2], [3, 4]]) inv_A = np.linalg.inv(A) print(inv_A)
9、求解线性方程组
在线性代数中,线性方程组是指由一个或多个未知数和多个线性方程组成的方程组。线性方程组的解就是满足所有方程的未知数组成的向量。NumPy 提供了 numpy.linalg.solve()
函数来求解线性方程组。numpy.linalg.solve()
函数的参数是系数矩阵和常数向量,返回值是解向量。
import numpy as np A = np.array([[1, 2], [3, 4]]) b = np.array([5, 6]) x = np.linalg.solve(A, b) print(x)