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求下列矩阵的对角线元素 上三角阵 下三角阵 秩 范数 条件数 迹