Vous êtes familiers avec les listes en Python. Les "arrays" de numpy sont des listes ... ou des listes de listes ... ou des listes de listes de listes... Ce sont essentiellement (sauf pour des différences mineures) des matrices.
On peut utiliser des listes Python pour initialiser un "array" de numpy.
In [1]:
import numpy as np # Presque tous les programmeurs utilisent l'abbréviation np
ma_liste = [1, 2, 3, 4, 5]
array1 = np.array(ma_liste)
print("ma liste:", ma_liste)
print("objet numpy: ", array1)
Au lieu d'imprimer l'objet numpy, on peut voir sa représentation directement
In [2]:
array1
Out[2]:
Créons une deuxième liste ainsi qu'une liste de listes
In [3]:
ma_liste2 = [10, 20, 30, 40, 50]
mes_listes = [ma_liste, ma_liste2]
print("mes listes: \n", mes_listes)
print("-"*40)
matrice = np.array(mes_listes)
print("La matrice: \n", matrice)
print("-"*40)
print("Représentation de la matrice:")
matrice # pour voir sa représentation
Out[3]:
Nous avons donc une matrice avec 2 lignes et 5 colonnes, dont les éléments sont des entiers.
In [4]:
print("shape = ", matrice.shape) # information sur nombre de lignes et colonnes
print("type = ", matrice.dtype) # information sur le contenu
On peut automatiquement créer des matrices particulières, soient remplies avec des zéros, des 1, ou la matrice identité (qui est une matrice carrée par définition.
In [10]:
print(np.zeros(4))
print('-'*40)
print(np.zeros([3,3]))
print('-'*40)
print(np.ones([3,2]))
print('-'*40)
print(np.eye(4)) # matrice identité
Numpy inclut une généralisation de la fonction "range" the Python, mais permettant des valeurs non-entières.
In [6]:
np.arange(1, 5, 0.2)
Out[6]:
Par défaut, les opérations sont faites sur chaque élément de la matrice. Nous allons démontrer ceci en créant deux matrices de la même taille (même nombre de lignes et de colonnes) et en faisant diverses opérations.
Nous commençons avec des opérations sur une seule matrice.
In [7]:
mat1 = np.array([ [1, 2, 3], [4, 5, 6]])
print(3 * mat1)
print("-"*40)
print(mat1 / 2)
print("-"*40)
print(1 / mat1)
print("-"*40)
print(mat1 % 3)
print("-"*40)
print(mat1 + 20)
print("-"*40)
Nous considérons maintenant des opérations avec deux matrices.
In [8]:
mat2 = np.array([ [11, 12, 13], [14, 15, 16]])
print(mat1 + mat2)
print("-"*40)
print(mat2 - mat1)
print("-"*40)
print(mat1 * mat1) # IMPORTANT: ceci n'est PAS la multiplication normale de matrices
Si on essaie de faire de telles opérations sur des matrices de taille différente, cela ne fonctionne pas.
In [9]:
mat3 = np.array([[1, 2], [3, 4]])
mat3 * mat1