zoukankan      html  css  js  c++  java
  • 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]])
  • 相关阅读:
    2019ICPC上海站
    “浪潮杯”第九届山东省ACM大学生程序设计竞赛重现赛(2018)
    集合问题
    后缀数组
    141. 周期(KMP)
    求和(矩阵快速幂)
    大数(KMP)
    1270: [蓝桥杯2015决赛]完美正方形
    AC自动机
    8.26作业
  • 原文地址:https://www.cnblogs.com/cymwill/p/7857456.html
Copyright © 2011-2022 走看看