2017-09-12 1 views
0

J'ai calculé 9 éléments de matrice nommés sij, avec i et j étant des variables (i, j = [1, 2, 3]). Ici, je dénote des lignes et des j colonnes. Supposons que je veuille une matrice 3x3 composée des éléments de la matrice s11, s12, ... s32, s33 (neuf éléments au total). Comment puis-je utiliser pour les boucles pour construire une matrice à partir de ces éléments? Comme ceci:Construire une matrice en utilisant une boucle for

matrix = [[s11, s12, s13], [s21, s22, s23], [s31, s32, s33]] 

Alors que j'obtiens une matrice qui ressemble à ceci.

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
+0

Utiliser 'np.array' /' np.matrix 'wrapper? – Divakar

+3

Vous avez juste un tas de ces variables dans votre portée mondiale? Pourquoi ne les avez-vous pas simplement ajoutés à une 'liste' quand vous les avez générés, alors passez simplement cette liste au constructeur' np.array'? –

Répondre

1

Je considérerais renommer le sij à s[i][j]. Ensuite, les utiliser dans des boucles serait trivial.

s[1][1] = 1 
s[1][2] = 2 
s[1][3] = 3 
(...) 
s[3][3] = 9 

Puis:

au lieu de:

matrix = [[s11, s12, s13], [s21, s22, s23], [s31, s32, s33]] 

Vous pouvez avoir les deux boucles imbriquées suivantes pour construire la matrice.

for i in (1,4): 
    for j in (1,4): 

BTW, ayant une 0 sur la base numérotation serait plus Pythonic.

0

Pour la raison que la question posée sur la construction d'une matrice en utilisant pour la boucle pour la réponse par https://stackoverflow.com/users/1656850/boardrider est correcte et est recommandée. Cela dit, parce que la question a aussi étiqueté numpy et scipy, les réponses dans les commentaires sous la question peuvent également être correctes.

0

Vous êtes mieux d'écrire un tableau et remodelant de telle sorte que vous ne avez pas besoin de taper des éléments à des variables, mais ici est un one-liner

>> np.reshape([eval('s{0}{1}'.format(x,y)) for x in range(1,4) for y in range(1,4)], (3,3)) 
array([[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]]