Tutoriel Numpy - NumPy Multidimensional Array-ndarray

Jinku Hu 30 janvier 2023
  1. Définition du ndarray
  2. Attributs ndarray
Tutoriel Numpy - NumPy Multidimensional Array-ndarray

NumPy est une bibliothèque qui utilise des tableaux multidimensionnels comme structure de données de base. La seule structure de données dans NumPy est ndarray mais pas la primitive Python type de données list, car list fonctionne relativement lentement.

Après avoir appris le ndarray qui est la pierre angulaire de NumPy, vous comprendrez pourquoi NumPy peut réaliser un calcul à grande vitesse.

Définition du ndarray

Le terme ndarray est l’abréviation de tableau à n dimensions, ou en d’autres termes, de tableaux multidimensionnels. ndarray est un objet représentant un tableau homogène et multidimensionnel d’éléments de taille fixe.

Les dimensions et le nombre d’éléments sont définis par la forme, c’est-à-dire un tuple de N entiers qui représente le nombre d’éléments dans chaque dimension. Le type d’élément dans le tableau est défini par dtype - data-type object.

Expliquons les phrases ci-dessus en langage profane. Tous les éléments stockés dans l’objet ndarray doivent avoir le même type de données et la même taille.

Les caractéristiques du type de données ndarray sont résumées comme suit.

  1. Ne peut stocker que des éléments de même type
  2. La quantité de données dans chaque dimension doit être la même, par exemple, un ndarray 2D doit avoir la même quantité d’éléments dans chaque colonne, et bien sûr aussi dans chaque ligne.
  3. Il est écrit en langage C et il pourrait exécuter l’opération de matrice de façon optimale

Attributs ndarray

Lisons les attributs de ndarray.

Attributs Description
T Transposez la matrice. Lorsque le tableau est 1 D, le tableau original est retourné.
data Un objet tampon Python qui pointe vers la position de départ des données dans le tableau.
dtype Le type de données de l’élément contenu dans le ndarray.
flags Informations sur la façon de stocker les données de ndarray en mémoire (disposition de la mémoire).
flat Un itérateur qui convertit ndarray en un tableau unidimensionnel.
imag La partie imaginaire des données du ndarray
real Partie réelle des données ndarray
size Le nombre d’éléments contenus dans le ndarray.
itemsize La taille de chaque élément en octets.
nbytes La mémoire totale (en octets) occupée par le ndarray.
ndim Le nombre de dimensions contenues dans le ndarray.
shape La forme du ndarray (les résultats sont des tuples).
strides Le nombre d’octets requis pour passer à l’élément adjacent suivant dans chaque direction de dimension est représenté par un tuple.
ctypes Un itérateur qui est traité dans le module ctypes.
base L’objet sur lequel ndarray est basé (quelle mémoire est référencée).

Lorsque vous accédez aux attributs de ndarray, les données de l’instance de ndarray ne sont pas modifiées, même si vous utilisez .T pour obtenir la transposition de l’objet. Vous obtenez un nouvel objet ndarray mais pas les données originales modifiées.

Regardons la signification spécifique de chaque attribut à travers des exemples de codes.

>>> import numpy as np
>>> a = np.array([1, 2, 3])

Nous devons importer la bibliothèque NumPy et créer un nouveau tableau 1-D. Vous pouvez vérifier son type de données et le type de données de son élément.

>>> type(a)
numpy.ndarray
>>> a.dtype
dtype('int32')

Créons un nouveau tableau 2-D et vérifions ses attributs.

>>> b = np.array([[4, 5, 6], [7, 8, 9]])
>>> b
array([[4, 5, 6],
       [7, 8, 9]])
>>> b.T     # get the transpose of b
array([[4, 7],
       [5, 8],
       [6, 9]])
>>> b       # b keeps unmodified
array([[4, 5, 6],
       [7, 8, 9]])
>>> a.size  # a has 3 elements
3
>>> b.size  # b has 6 elements
6
>>> a.itemsize # The size of element in a. The data type here is int64 - 8 bytes
8
>>> b.nbytes  # check how many bytes in b. It is 48, where 6x8 = 48
48
>>> b.shape # The shape of b
(2, 3)
>>> b.dnim # The dimensions of b
2
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook