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.
- Ne peut stocker que des éléments de même type
- 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. - 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
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