線性代數模塊(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