【问题标题】:Create lower triangular matrix from a vector in python从python中的向量创建下三角矩阵
【发布时间】:2021-10-14 02:13:56
【问题描述】:

我想创建一个 python 程序,它从具有一些系数的向量计算矩阵。所以假设我们有以下系数向量 c = [c0, c1, c2] = [0, 1, 0],那么我想计算矩阵:

那么我如何从向量 c 到创建下三角矩阵 A。我知道如何手动索引它,但我需要一个可以做到这一点的程序。我可能正在考虑在另一个 for 循环中使用一个 for 循环,但我对它实际上是如何完成的感到困惑,你们认为应该在这里做什么?

【问题讨论】:

    标签: python matrix vector linear-algebra


    【解决方案1】:

    一种方法(假设您使用的是普通数组而不是 numpy 或任何东西):

    src = [0, 1, 0]
    dst = [
        [ 
            src[i-j] if i >= j else 0
            for j in range(len(src))
        ] for i in range(len(src))
    ]
    

    【讨论】:

    • 非常感谢但是我觉得bb1的回答更适合我现在做的工作
    【解决方案2】:

    您可以尝试以下方法:

    import numpy as np
    
    c = [1, 2, 3, 4, 5]
    n = len(c)
    a = np.zeros((n,n))
    for i in range(n):
        np.fill_diagonal(a[i:, :], c[i])
        
    print(a)
    

    它给出:

    [[1. 0. 0. 0. 0.]
     [2. 1. 0. 0. 0.]
     [3. 2. 1. 0. 0.]
     [4. 3. 2. 1. 0.]
     [5. 4. 3. 2. 1.]]
    

    【讨论】:

    • 如果我想要这样的东西怎么办? stackoverflow.com/questions/69576073/…
    • 我发布了该问题的答案。这是对上面代码的一个小修改:它将np.fill_diagonal() 应用于适当的切片。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多