Matrice Python et introduction à NumPy

Dans cet article, nous découvrirons les matrices Python à l'aide de listes imbriquées et du package NumPy.

Une matrice est une structure de données bidimensionnelle dans laquelle les nombres sont organisés en lignes et en colonnes. Par exemple:

Cette matrice est une matrice 3x4 (prononcée "trois par quatre") car elle comporte 3 lignes et 4 colonnes.

Matrice Python

Python n'a pas de type intégré pour les matrices. Cependant, nous pouvons traiter la liste d'une liste comme une matrice. Par exemple:

 A = ((1, 4, 5), (-5, 8, 9)) 

Nous pouvons traiter cette liste de liste comme une matrice à 2 lignes et 3 colonnes.

Assurez-vous de vous renseigner sur les listes Python avant de poursuivre cet article.

Voyons comment travailler avec une liste imbriquée.

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) print("A =", A) print("A(1) =", A(1)) # 2nd row print("A(1)(2) =", A(1)(2)) # 3rd element of 2nd row print("A(0)(-1) =", A(0)(-1)) # Last element of 1st Row column = (); # empty list for row in A: column.append(row(2)) print("3rd column =", column) 

Lorsque nous exécutons le programme, la sortie sera:

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) A (1) = (-5, 8, 9, 0) A (1) (2) = 9 A (0) (- 1) = 12 3e colonne = (5, 9, 11) 

Voici quelques exemples supplémentaires liés aux matrices Python utilisant des listes imbriquées.

  • Ajouter deux matrices
  • Transposer une matrice
  • Multipliez deux matrices

L'utilisation de listes imbriquées comme matrice fonctionne pour des tâches de calcul simples, cependant, il existe une meilleure façon de travailler avec des matrices en Python à l'aide du package NumPy.

Tableau NumPy

NumPy est un package pour le calcul scientifique qui prend en charge un puissant objet de tableau à N dimensions. Avant de pouvoir utiliser NumPy, vous devez l'installer. Pour plus d'informations,

  • Visitez: Comment installer NumPy?
  • Si vous êtes sous Windows, téléchargez et installez la distribution anaconda de Python. Il est livré avec NumPy et plusieurs autres packages liés à la science des données et à l'apprentissage automatique.

Une fois NumPy installé, vous pouvez l'importer et l'utiliser.

NumPy fournit un tableau multidimensionnel de nombres (qui est en fait un objet). Prenons un exemple:

 import numpy as np a = np.array((1, 2, 3)) print(a) # Output: (1, 2, 3) print(type(a)) # Output: 

Comme vous pouvez le voir, la classe de tableau de NumPy est appelée ndarray.

Comment créer un tableau NumPy?

Il existe plusieurs façons de créer des tableaux NumPy.

1. Tableau d'entiers, de flottants et de nombres complexes

 import numpy as np A = np.array(((1, 2, 3), (3, 4, 5))) print(A) A = np.array(((1.1, 2, 3), (3, 4, 5))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Lorsque vous exécutez le programme, la sortie sera:

 ((1 2 3) (3 4 5)) ((1.1 2. 3.) (3. 4. 5.)) ((1. + 0.j 2. + 0.j 3. + 0.j) (3. + 0.j 4. + 0.j 5. + 0.j)) 

2. Tableau de zéros et de uns

 import numpy as np zeors_array = np.zeros( (2, 3) ) print(zeors_array) ''' Output: ((0. 0. 0.) (0. 0. 0.)) ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // specifying dtype print(ones_array) # Output: ((1 1 1 1 1)) 

Ici, nous avons spécifié dtypeà 32 bits (4 octets). Par conséquent, ce tableau peut prendre des valeurs de à .-2-312-31-1

3. Utilisation de arange () et shape ()

 import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Output: A = (0 1 2 3) B = (( 0 1 2 3 4 5) ( 6 7 8 9 10 11)) ''' 

En savoir plus sur les autres méthodes de création d'un tableau NumPy.

Opérations matricielles

Ci-dessus, nous vous avons donné 3 exemples: ajout de deux matrices, multiplication de deux matrices et transposition d'une matrice. Nous avons utilisé des listes imbriquées avant d'écrire ces programmes. Voyons comment nous pouvons faire la même tâche en utilisant le tableau NumPy.

Ajout de deux matrices

Nous utilisons l' +opérateur pour ajouter les éléments correspondants de deux matrices NumPy.

 import numpy as np A = np.array(((2, 4), (5, -6))) B = np.array(((9, -3), (3, 6))) C = A + B # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Multiplication de deux matrices

Pour multiplier deux matrices, nous utilisons la dot()méthode. En savoir plus sur le fonctionnement de numpy.dot.

Remarque: * est utilisé pour la multiplication de tableaux (multiplication des éléments correspondants de deux tableaux) et non pour la multiplication matricielle.

 import numpy as np A = np.array(((3, 6, 7), (5, -3, 0))) B = np.array(((1, 1), (2, 1), (3, -3))) C = A.dot(B) print(C) ''' Output: (( 36 -12) ( -1 2)) ''' 

Transposer une matrice

Nous utilisons numpy.transpose pour calculer la transposition d'une matrice.

 import numpy as np A = np.array(((1, 1), (2, 1), (3, -3))) print(A.transpose()) ''' Output: (( 1 2 3) ( 1 1 -3)) ''' 

Comme vous pouvez le voir, NumPy a rendu notre tâche beaucoup plus facile.

Accéder aux éléments, lignes et colonnes de la matrice

Access matrix elements

Similar like lists, we can access matrix elements using index. Let's start with a one-dimensional NumPy array.

 import numpy as np A = np.array((2, 4, 6, 8, 10)) print("A(0) =", A(0)) # First element print("A(2) =", A(2)) # Third element print("A(-1) =", A(-1)) # Last element 

When you run the program, the output will be:

 A(0) = 2 A(2) = 6 A(-1) = 10 

Now, let's see how we can access elements of a two-dimensional array (which is basically a matrix).

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) # First element of first row print("A(0)(0) =", A(0)(0)) # Third element of second row print("A(1)(2) =", A(1)(2)) # Last element of last row print("A(-1)(-1) =", A(-1)(-1)) 

When we run the program, the output will be:

 A(0)(0) = 1 A(1)(2) = 9 A(-1)(-1) = 19 

Access rows of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(0) =", A(0)) # First Row print("A(2) =", A(2)) # Third Row print("A(-1) =", A(-1)) # Last Row (3rd row in this case)

When we run the program, the output will be:

 A(0) = (1, 4, 5, 12) A(2) = (-6, 7, 11, 19) A(-1) = (-6, 7, 11, 19) 

Access columns of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(:,0) =",A(:,0)) # First Column print("A(:,3) =", A(:,3)) # Fourth Column print("A(:,-1) =", A(:,-1)) # Last Column (4th column in this case) 

When we run the program, the output will be:

 A(:,0) = ( 1 -5 -6) A(:,3) = (12 0 19) A(:,-1) = (12 0 19) 

If you don't know how this above code works, read slicing of a matrix section of this article.

Slicing of a Matrix

Slicing of a one-dimensional NumPy array is similar to a list. If you don't know how slicing for a list works, visit Understanding Python's slice notation.

Prenons un exemple:

 import numpy as np letters = np.array((1, 3, 5, 7, 9, 7, 5)) # 3rd to 5th elements print(letters(2:5)) # Output: (5, 7, 9) # 1st to 4th elements print(letters(:-5)) # Output: (1, 3) # 6th to last elements print(letters(5:)) # Output:(7, 5) # 1st to last elements print(letters(:)) # Output:(1, 3, 5, 7, 9, 7, 5) # reversing a list print(letters(::-1)) # Output:(5, 7, 9, 7, 5, 3, 1) 

Voyons maintenant comment découper une matrice.

 import numpy as np A = np.array(((1, 4, 5, 12, 14), (-5, 8, 9, 0, 17), (-6, 7, 11, 19, 21))) print(A(:2, :4)) # two rows, four columns ''' Output: (( 1 4 5 12) (-5 8 9 0)) ''' print(A(:1,)) # first row, all columns ''' Output: (( 1 4 5 12 14)) ''' print(A(:,2)) # all rows, second column ''' Output: ( 5 9 11) ''' print(A(:, 2:5)) # all rows, third to the fifth column '''Output: (( 5 12 14) ( 9 0 17) (11 19 21)) ''' 

Comme vous pouvez le voir, l'utilisation de NumPy (au lieu de listes imbriquées) facilite beaucoup le travail avec des matrices, et nous n'avons même pas effleuré les bases. Nous vous suggérons d'explorer le package NumPy en détail, surtout si vous essayez d'utiliser Python pour la science des données / l'analyse.

Ressources NumPy que vous pourriez trouver utiles:

  • Tutoriel NumPy
  • Référence NumPy

Articles intéressants...