线性代数模块(linalg)


1、np.linalg.norm(求范数)

     linalg=linear(线性)+algebra(代数),norm则表示范数。

x_norm=np.linalg.norm(x, ord=None, axis=None, keepdims=False)

     ①x: 表示矩阵(也可以是一维)

     ②ord:范数类型

向量范数

     

ord=1:列和的最大值

ord=2:|λE-ATA|=0,求特征值,然后求最大特征值得算术平方根(matlab在线版,计算ans=ATA,[x,y]=eig(ans),sqrt(y),x是特征向量,y是特征值)

ord=∞:行和的最大值

ord=None:默认情况下,是求整体的矩阵元素平方和,再开根号

axis:处理类型

axis=1表示按行向量处理,求多个行向量的范数

axis=0表示按列向量处理,求多个列向量的范数

axis=None表示矩阵范数。

④keepding:是否保持矩阵的二维特性

True表示保持矩阵的二维特性,False相反

    x = np.array([[4, 4],
                  [4, 4]])
    print("默认参数(矩阵整体元素平方和开根号,不保留矩阵二维特性):%d" % np.linalg.norm(x))
    print("矩阵整体元素平方和开根号,保留矩阵二维特性:%s" % np.linalg.norm(x, keepdims=True))
    print("矩阵1范数:%s" % np.linalg.norm(x, ord=1, keepdims=True))
    print("矩阵2范数:%s" % np.linalg.norm(x, ord=2, keepdims=True))
    print("矩阵无穷大范数:%s" % np.linalg.norm(x, ord=np.inf, keepdims=True))
    print("矩阵每个行向量求向量的1范数:%s" % np.linalg.norm(x, ord=1, axis=1, keepdims=True))

--------------------------结果----------------------------
默认参数(矩阵整体元素平方和开根号,不保留矩阵二维特性):8
矩阵整体元素平方和开根号,保留矩阵二维特性:[[8.]]
矩阵1范数:[[8.]]
矩阵2范数:[[8.]]
矩阵无穷大范数:[[8.]]
矩阵每个行向量求向量的1范数:[[8.]
 [8.]]

 2、

    x = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
    y = np.array([1, 0, 1])
    z = np.array([[2, 1],
                  [0, 3]])
    print(np.dot(x, y))
    print(x.T)
    print(np.dot(y, x.T))
    print(np.trace(x))  # trace是求shape的对角线上的元素的和
    print(np.linalg.det(z))  # 行列式
    print(np.linalg.matrix_rank(z))  # 矩阵的秩
    print(np.linalg.eig(z))  # 求本征值和本征向量
    print(np.linalg.cholesky(z))

--------------------结果-----------------------
[ 4 10 16]
[[1 4 7]
 [2 5 8]
 [3 6 9]]
[ 4 10 16]
15
6.0
2
(array([2., 3.]), array([[1.        , 0.70710678],
       [0.        , 0.70710678]]))
[[1.41421356 0.        ]
 [0.         1.73205081]]

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM