python 矩阵分成上三角下三角和对角三个矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 矩阵分成上三角下三角和对角三个矩阵相关的知识,希望对你有一定的参考价值。

diagonal
Return specified diagonals.
diagflat
Create a 2-D array with the flattened input as a diagonal.
trace
Sum along diagonals.
triu
Upper triangle of an array.
tril
Lower triangle of an array.
先讲一个方阵的对角线下的下三角阵和对角线上的上三角阵提取出来(如果只需要上下三角阵,则去掉tril/triu中的第二个参数)
上代码(这里使用tril和triu都是返回array形式,还需使用mat转换回矩阵):
>>> m = np.mat("1,2,3;4,5,6;7,8,9")
>>> m
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
>>> L = np.tril(m,-1)
>>> L
array([[0, 0, 0],
       [4, 0, 0],
       [7, 8, 0]])
>>> U = np.triu(m,1)
>>> U
array([[0, 2, 3],
       [0, 0, 6],
       [0, 0, 0]])

而单独要提取对角线上的元素作为一个矩阵有如下两种方法:

1、运用np.diag两次,再使用mat转换回矩阵:

>>> D = np.diag(np.diag(m))
>>> D
array([[1, 0, 0],
       [0, 5, 0],
       [0, 0, 9]])
>>> D = np.mat(D)
>>> D
matrix([[1, 0, 0],
        [0, 5, 0],
        [0, 0, 9]])

2、运用下三角矩阵减去次下三角矩阵(即对角线下的下三角阵):

>>> D = np.tril(m) - L
>>> D
array([[1, 0, 0],
       [0, 5, 0],
       [0, 0, 9]])
>>> D = np.mat(D)
>>> D
matrix([[1, 0, 0],
        [0, 5, 0],
        [0, 0, 9]])

 

 

 

以上是关于python 矩阵分成上三角下三角和对角三个矩阵的主要内容,如果未能解决你的问题,请参考以下文章

C++(数据结构与算法):16---特殊矩阵的实现(对角矩阵三对角矩阵下三角矩阵上三角矩阵对称矩阵)

MATLAB求下列矩阵的对角线元素 上三角阵 下三角阵 秩 范数 条件数 迹

上三角下三角对称矩阵

2021-12-22看懂 散点图矩阵(pairs plots)

用对角线索引矩阵中的上三角形或下三角形

LA_#常见矩阵@特殊类型矩阵@三角矩阵@对交矩阵#特殊行列式@范德蒙行列式