deux structures sont Matrices dimensions. En langage Python, la représentation la plus naturelle d'une matrice est une liste de listes.
Ainsi, vous pouvez écrire une matrice de ligne comme:
[[1, 2, 3, 4]]
Et écrire une matrice de colonne:
[[1],
[2],
[3],
[4]]
Cela va bien à MXN matrices ainsi:
[[10, 20],
[30, 40],
[50, 60]]
Voir matfunc.py pour un exemple de la façon de développer af paquet de matrice d'Ull en Python pur. La documentation correspondante est here.
Et voici un exemple travaillé à de faire la multiplication de la matrice en python ordinaire à l'aide d'une liste-des-listes de représentation:
>>> from pprint import pprint
>>> def mmul(A, B):
nr_a, nc_a = len(A), len(A[0])
nr_b, nc_b = len(B), len(B[0])
if nc_a != nr_b:
raise ValueError('Mismatched rows and columns')
return [[sum(A[i][k] * B[k][j] for k in range(nc_a))
for j in range(nc_b)] for i in range(nr_a)]
>>> A = [[1, 2, 3, 4]]
>>> B = [[1],
[2],
[3],
[4]]
>>> pprint(mmul(A, B))
[[30]]
>>> pprint(mmul(B, A), width=20)
[[1, 2, 3, 4],
[2, 4, 6, 8],
[3, 6, 9, 12],
[4, 8, 12, 16]]
Comme autre répondant a mentionné, si vous obtenez un travail sérieux à faire de la matrice, il Vous devrez installer numpy qui prend en charge directement de nombreuses opérations matricielles:
au lieu de [0 pour i dans la plage (n)] il faut utiliser [0] * n – unbeli
@unbeli, s/devrait/pourrait/- '[0] * n' est plus rapide mais introduit une asymétrie qui pourrait se révéler extrêmement déroutant pour un débutant et les inciter à utiliser une telle réplication ailleurs (sur n'importe quelle couche, mais la plus profonde), ce qui serait un désastre total. J'ai choisi l'approche plus régulière et parfaitement symétrique très délibérément, croyez-moi - l'économie ponctuelle de quelques microsecondes à l'initialisation de la matrice ne vaut pas la peine d'ajouter à la désorientation d'un novice ;-). –