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

2024-06-21 20:43:02 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在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()

我必须遵守一些规则


Tags: inforreturn规则defrange矩阵print
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

非常接近,只是修改了几行:

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

相关问题 更多 >