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

如何在python中打印对角线矩阵?,python,arrays,python-3.x,Python,Arrays,Python 3.x,如何在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

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

我必须遵守一些规则

你可以用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.]])
 1
   2
     3
       4
         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)
输出:

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.]])
 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()

非常感谢。我需要消除零。。。用空格而不是零打印。。。没有零。。。我需要做一个函数吗?我把规则放在问题中,尽可能少的几行发生了什么,而不打印0s lol?