J'ai des problèmes pour essayer d'échelonner une matrice 5x5. J'ai d'abord provoqué une ligne nulle vers la dernière ligne du tableau (cela a fonctionné), puis j'ai essayé de faire une ligne dont l'indice le plus élevé reste inférieur à celui avec un index plus petit, mais dans la ligne:Matrice de stagging sur Python
if pivot_index[i] > pivot_index[line_aux] and line_aux < 5 and i < 5:
du code, le compilateur avertit que l'index de la liste est hors de portée, mais je ne sais pas pourquoi (c'est le problème), ou comment le résoudre. L'algorithme suit ci-dessous:
import numpy as np
def search_pivot(L):
if (np.nonzero(L)[0]).size == 0:
return -1
else:
return np.nonzero(L)[1][0]
def find_pivot_index(mat):
pivot = []
for i in range(5):
pivot.append(search_pivot(np.array(mat[i])))
return pivot
mat = np.matrix([[0,5,2,7,8],[0,0,4,14,16],[0,0,0,0,0],[2,6,10,16,22],[3,5,8,9,15]]).astype(float)
print("Original array:\n",mat,"\n")
pivot_index = find_pivot_index(mat)
line_aux = 0
for i in range(5):
line_aux = line_aux + 1
if pivot_index[i] > pivot_index[line_aux] and line_aux < 5 and i < 5:
m = mat.tolist()
(m[i],m[linha_aux]) = (m[linha_aux],m[i])
mat = np.matrix(m)
pivot_index = find_pivot_index(mat)
print(mat,"\n")
line_aux = 0
for i in range(5):
line_aux = line_aux + 1
if pivot_index[i] == -1 and line_aux < 5 and i < 5:
m = mat.tolist()
(m[i],m[linha_aux]) = (m[linha_aux],m[i])
mat = np.matrix(m)
pivot_index = find_pivot_index(mat)
print(mat)
Salut Andrew, vous pourriez être intéressé par https://es.stackoverflow.com/ –
(cependant, s'il vous plaît éviter les envois multiples, il serait préférable de publier le code espagnol directement sur la place es.stackoverflow.com –
En outre, qu'est-ce qu'une matrice décalée, ou pour décaler un tableau? Je ne reconnais pas cela comme un terme standard. –