NumPy est la pierre angulaire du calcul scientifique en Python, et sa puissance réside en grande partie dans son objet tableau N-dimensionnel, le ndarray. Maîtriser les ndarrays est essentiel pour une utilisation efficace de NumPy. Ce tutoriel fournit une introduction complète aux ndarrays, couvrant leur création, leurs attributs et leurs opérations fondamentales.
Table des matières
Définition de Ndarray
Un ndarray NumPy (tableau N-dimensionnel) est un conteneur multidimensionnel homogène contenant des éléments du même type et de la même taille. Considérez-le comme une version hautement optimisée et sophistiquée d’une liste Python, capable de gérer des données sur plusieurs dimensions (1D, 2D, 3D et plus). Contrairement aux listes Python, qui peuvent contenir des éléments de types de données variés, les ndarrays imposent l’homogénéité des types, ce qui entraîne des gains de performance substantiels. Cette homogénéité permet des opérations vectorisées — appliquer des opérations à l’ensemble du tableau simultanément au lieu d’élément par élément, améliorant considérablement la vitesse.
Caractéristiques clés des ndarrays :
- Homogène : Tous les éléments partagent le même type de données.
- Multidimensionnel : Représente les données dans différentes dimensions (vecteurs 1D, matrices 2D, tenseurs 3D, etc.).
- Taille fixe : La taille du tableau est fixe lors de sa création et le redimensionnement implique généralement la création d’un nouveau tableau.
- Opérations vectorisées : Prend en charge des opérations efficaces élément par élément et au niveau du tableau.
- Efficacité mémoire : Stocke les données dans des blocs de mémoire contigus, améliorant les performances.
Création de Ndarray
La création de ndarrays est simple à l’aide des fonctions de NumPy :
import numpy as np
# À partir d'une liste
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
# À l'aide de fonctions spécialisées
arr_zeros = np.zeros((2, 3)) # Tableau de zéros
arr_ones = np.ones((3, 2)) # Tableau de uns
arr_arange = np.arange(10) # Séquence de nombres
arr_linspace = np.linspace(0, 1, 5) # Nombres régulièrement espacés
arr_random = np.random.rand(2, 2) # Nombres aléatoires
print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)
Attributs de Ndarray
Les objets Ndarray offrent plusieurs attributs cruciaux fournissant des informations sur leur forme, leur type de données, leur taille, et plus encore. Comprendre ces attributs est essentiel pour une manipulation efficace des ndarrays.
ndim
: Le nombre de dimensions du tableau (axes).shape
: Un tuple indiquant la taille du tableau le long de chaque dimension (par exemple, (3, 4) pour une matrice 3×4).size
: Le nombre total d’éléments.dtype
: Le type de données des éléments (par exemple,int32
,float64
,bool
).itemsize
: La taille (en octets) de chaque élément.nbytes
: La taille totale (en octets) du tableau (itemsize * size
).
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("Nombre de dimensions :", arr.ndim)
print("Forme :", arr.shape)
print("Taille :", arr.size)
print("Type de données :", arr.dtype)
print("Taille d'élément :", arr.itemsize)
print("Octets totaux :", arr.nbytes)
Opérations de base sur les Ndarray
NumPy fournit des opérations efficaces élément par élément et au niveau du tableau. Les opérations arithmétiques simples (+, -, *, /, //, %, **) sont vectorisées :
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print("Addition :", arr1 + arr2)
print("Soustraction :", arr1 - arr2)
print("Multiplication :", arr1 * arr2)
print("Division :", arr1 / arr2)
Des opérations plus avancées (comme la multiplication matricielle, le produit scalaire, etc.) sont également facilement disponibles.