美文网首页
numpy中的常用线性代数

numpy中的常用线性代数

作者: MatrixYe | 来源:发表于2020-12-28 07:25 被阅读0次

    1.创建向量

    narray中的行向量shape=(1,m) 和列向量shape=(m,1)都不是数学意义上的向量,在用于线性代数的计算时,向量的表示方式为shape=(m,)

    v = np.array([0, 1, 2]) # 真实向量 shape=(3,),此时,向量的转置T等于其本身
    # v = np.array([[0, 1, 2]]) # 行向量 shape=(1,3)
    # v = np.array([[0], [1], [2]]) # 列向量 shape=(3,1)
    

    结果为\vec{v}=\left[\begin{array}{l}0 \\1 \\2\end{array}\right]

    2.创建矩阵

    matrix = np.mat([[1, 2], [3, 4]])
    

    3.矩阵转置

    # 转置
    matrix = np.mat([[1, 2], [3, 4]])
    matrix.T
    

    结果为\left[\begin{array}{l}1 &3\\2 & 4\end{array}\right]\\

    4.矩阵的秩

    # 秩
    matrix = np.mat([[1, 2], [3, 4]])
    np.linalg.matrix_rank(matrix)
    

    结果为2,任意矩阵的秩等于其列秩,即行数

    5.矩阵行列式

    # 行列式
    matrix = np.mat([[1, 2], [3, 4]])
    np.linalg.det(matrix)
    

    结果为为-2,如果该矩阵为非方阵,那么计算行列式时会抛出异常

    6.特征值和特征向量

    # 特征向量和特征值
    matrix = np.mat([[1, 2], [3, 4]])
    eigenvalues, eigenvectors = np.linalg.eig(matrix)
    

    结果为\lambda_1=-0.37228132 \lambda_2=5.37228132,\vec{v_1}=[-0.82456484 -0.41597356],,\vec{v_2}= [ 0.56576746 -0.90937671]

    7.逆矩阵

    # 矩阵的逆
    m = np.mat([[1, 2], [3, 4]])
    result = np.linalg.inv(m)
    

    结果为 [[-2. 1. ],[ 1.5 -0.5]]

    8.矩阵的左乘

    m1 = np.mat([[1, 2], [3, 4]])
    m2 = np.mat([[0, 1], [1, 2]])
    np.dot(m1, m2)
    # 等价于 m1 @ m2
    

    结果为m1x m2为 [[ 2 5], [ 4 11]],m2 x m1为 [[ 3 4],[ 7 10]]矩阵相乘有顺序,因此结果不同。

    9. 矩阵乘向量

    v=np.array([1,2,3])
    m=np.mat([[1,2,3],[1,0,1]])
    np.dot(m,v)
    

    计算结果为 [[1 4 9]] 这里被转化为shape(1,3),得到的结果实际上是matrix。

    10.向量的内积

    v1 = np.array([0,2,1])
    v2 = np.array([2,0,1])
    inner_product = v1 @ v2
    # inner_product = np.inner(v1, v2) # 等价于
    

    结果为1

    11.向量的叉积

    np中的 外积的含义并不是线性代数中的外积或叉积概念,在np中,求两个向量的叉积

    # 求叉积
    v1 = np.array([0,2,1])
    v2 = np.array([2,0,1])
    cross_product=np.cross(v1,v2)
    

    结果为[ 2 2 -4],叉积的结果即线性代数中的外积,叉积是一个向量,该向量垂直于v1、v2所张成的平面中,且范数为v1、v2构成的面积。

    12.方程求解

    # 方程求解mx=y,求x
    m=np.array([[1,0],[0,1]]) # m
    y=np.array([[2,0],[0,2]]) # y
    result=np.linalg.solve(m,y) # x
    print(result)
    

    相关文章

      网友评论

          本文标题:numpy中的常用线性代数

          本文链接:https://www.haomeiwen.com/subject/mbuhwktx.html