如何在python中打印对角线矩阵?
如何在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
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?