【问题标题】:How to print a diagonal matrix in python?如何在python中打印对角矩阵?
【发布时间】:2019-09-17 01:29:11
【问题描述】:

如何在python中打印对角矩阵?

def crie_matriz(n_linhas = 5, n_colunas = 5):
    matriz = []
    for i in range(n_linhas):
        linha = []
        for j in range(n_colunas):
            linha.append(i + 1)
        matriz.append(linha)
        print(matriz[i][0],matriz[i][1], matriz[i][2],matriz[i][3], matriz[i][4])
    return matriz

A = crie_matriz()

我必须遵守一些规则

【问题讨论】:

    标签: python arrays python-3.x


    【解决方案1】:

    很接近,只是修改了几行:

    def crie_matriz(n_linhas = 5, n_colunas = 5):
        matriz = []
        for i in range(n_linhas):
            linha = []
            for j in range(n_colunas):
                linha.append(0)        # <<< 
            linha[i] = i + 1           # <<<
            matriz.append(linha)
            print(matriz[i][0],matriz[i][1], matriz[i][2],matriz[i][3], matriz[i][4])
        return matriz
    
    A = crie_matriz()
    

    输出:

    1 0 0 0 0
    0 2 0 0 0
    0 0 3 0 0
    0 0 0 4 0
    0 0 0 0 5
    

    【讨论】:

    • 发生了什么尽可能少的行而不打印 0 大声笑?
    【解决方案2】:

    你可以用 numpy 做到这一点:

    import np
    matriz = np.zeros((5,5))
    np.fill_diagonal(matriz,[1,2,3,4,5])
    

    输出:

    array([[1., 0., 0., 0., 0.],
           [0., 2., 0., 0., 0.],
           [0., 0., 3., 0., 0.],
           [0., 0., 0., 4., 0.],
           [0., 0., 0., 0., 5.]])
    

    让它看起来像你的原始输出:

    import sys
    np.savetxt(sys.stdout,matriz,fmt="%.f")
    

    输出:

    1 0 0 0 0
    0 2 0 0 0
    0 0 3 0 0
    0 0 0 4 0
    0 0 0 0 5
    

    要不打印空白,您可以执行以下操作:

    for i,val in enumerate(np.diagonal(matriz)):
        print(i*'  ','%.f' %val)
    

    输出:

     1
       2
         3
           4
             5
    

    【讨论】:

    • 谢谢!我需要消除零...用空格而不是零打印...没有零...我需要做一个函数吗?
    • 我把规则放在问题里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    相关资源
    最近更新 更多