Comprendre les types de données NumPy

NumPyBeginner
Pratiquer maintenant

Introduction

Ce laboratoire fournit un guide étape par étape pour comprendre et gérer les différents types de données dans NumPy. NumPy (Numerical Python) est une bibliothèque puissante qui offre un support pour les tableaux et matrices volumineux et multidimensionnels, ainsi qu'une collection de fonctions mathématiques pour opérer efficacement sur ces tableaux. Contrairement aux listes intégrées de Python, les tableaux NumPy sont plus économes en mémoire et plus rapides pour les calculs numériques.

Vous apprendrez à vérifier, spécifier et convertir les types de données des tableaux NumPy. Comprendre les types de données est crucial car ils affectent à la fois l'utilisation de la mémoire et les performances de calcul. Tout le codage sera effectué dans le fichier main.py à l'aide de l'éditeur de code, et vous exécuterez le script depuis le terminal. Cette approche pratique vous aidera à saisir ces concepts fondamentaux, qui sont cruciaux pour le calcul numérique et l'analyse de données.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 99%. Il a reçu un taux d'avis positifs de 94% de la part des apprenants.

Vérifier le type de données d'un tableau

Lorsque vous créez un tableau NumPy, NumPy déduit automatiquement le type de données le plus approprié pour ses éléments. Vous pouvez facilement vérifier ce type de données déduit à l'aide de l'attribut dtype du tableau.

L'attribut dtype vous indique le type de données que contient le tableau (comme les entiers, les nombres à virgule flottante, etc.) et la quantité de mémoire utilisée par chaque élément. Ces informations sont importantes pour comprendre comment NumPy gérera les opérations mathématiques sur vos données.

Tout d'abord, ouvrez le fichier main.py depuis l'explorateur de fichiers sur la gauche. Nous allons ajouter du code pour créer un tableau simple, puis afficher son type de données.

Ajoutez le code suivant à main.py :

## Create a NumPy array from a list of integers
## np.array() converts a Python list into a NumPy array
arr_int = np.array([1, 2, 3, 4, 5])

## Print the data type of the array
## .dtype shows the data type of array elements
print("Data type of arr_int:", arr_int.dtype)

Maintenant, enregistrez le fichier et exécutez-le depuis le terminal pour voir la sortie.

python main.py

Vous verrez le type de données du tableau affiché dans la console. Le type d'entier spécifique (comme int64) dépend de l'architecture de votre système.

Data type of arr_int: int64

Cela confirme que NumPy a correctement identifié les éléments comme des entiers.

Spécifier un type de données lors de la création

Bien que l'inférence automatique des types par NumPy soit utile, vous devez souvent définir explicitement le type de données d'un tableau pour une meilleure efficacité mémoire ou pour répondre aux exigences d'un calcul spécifique. Vous pouvez le faire en utilisant l'argument dtype lors de la création du tableau.

Différents types de données utilisent différentes quantités de mémoire :

  • int32 utilise 4 octets par élément
  • int64 utilise 8 octets par élément
  • float32 utilise 4 octets par élément
  • float64 utilise 8 octets par élément

Pour les grands tableaux, choisir le bon type de données peut économiser une quantité de mémoire significative et potentiellement améliorer les performances.

Créons un tableau et spécifions son type de données comme un flottant 32 bits. Modifiez votre fichier main.py avec le code suivant. Vous pouvez commenter ou supprimer le code de l'étape précédente.

## Create an array and specify the data type as float32
## The dtype parameter tells NumPy to store each number as a 32-bit float
arr_float = np.array([1.0, 2.5, 3.8], dtype=np.float32)

## Print the data type and the array
print("Data type of arr_float:", arr_float.dtype)
print("Array arr_float:", arr_float)

Enregistrez le fichier et exécutez-le à nouveau.

python main.py

La sortie montrera que le tableau a été créé avec le type de données float32 que vous avez spécifié.

Data type of arr_float: float32
Array arr_float: [1.  2.5 3.8]

Vous pouvez utiliser diverses chaînes de caractères pour les types de données ou des objets NumPy, tels que 'f4' pour float32, 'i8' pour int64, ou np.bool_ pour booléen.

Conversion du type de données d'un tableau

Après la création d'un tableau, vous pourriez avoir besoin de convertir son type de données. La méthode .astype() est utilisée à cette fin. Cette méthode ne modifie pas le tableau d'origine mais renvoie plutôt un nouveau tableau avec le type de données spécifié.

La conversion de type est utile lorsque vous avez besoin de :

  • Effectuer des opérations qui nécessitent un type de données spécifique
  • Réduire l'utilisation de la mémoire en convertissant vers des types plus petits
  • Préparer des données pour des fonctions qui attendent certains types

Créons un tableau d'entiers, puis convertissons-le en un tableau à virgule flottante. Mettez à jour votre fichier main.py avec le code suivant :

## Create an integer array
## np.arange(5) creates an array with numbers from 0 to 4 (5 elements total)
original_arr = np.arange(5)
print("Original array:", original_arr)
print("Original dtype:", original_arr.dtype)

## Convert the array to float64
## .astype() creates a new array with the specified data type
converted_arr = original_arr.astype(np.float64)
print("Converted array:", converted_arr)
print("Converted dtype:", converted_arr.dtype)

Enregistrez le fichier et exécutez-le.

python main.py

La sortie démontre que original_arr reste un tableau d'entiers, tandis que converted_arr est un nouveau tableau avec un type de données float64.

Original array: [0 1 2 3 4]
Original dtype: int64
Converted array: [0. 1. 2. 3. 4.]
Converted dtype: float64

C'est une manière sûre d'effectuer des conversions de type sans perdre vos données d'origine.

Utilisation d'autres types de données

NumPy prend en charge une large gamme de types de données au-delà des simples entiers et flottants, y compris les booléens et les nombres complexes. Comprendre comment NumPy gère ces types peut être très utile.

Les tableaux booléens sont particulièrement utiles pour :

  • Filtrer des données (sélectionner des éléments qui satisfont certaines conditions)
  • Les opérations logiques
  • Le masquage de tableaux

Par exemple, vous pouvez créer un tableau de valeurs booléennes qui représentent des conditions Vrai/Faux.

Créons un tableau booléen. Mettez à jour votre fichier main.py :

## Create a boolean array
## np.bool_ is NumPy's boolean data type (stores True/False values)
arr_bool = np.array([True, False, True], dtype=np.bool_)

print("Boolean array:", arr_bool)
print("Boolean array dtype:", arr_bool.dtype)

Enregistrez et exécutez le script.

python main.py

La sortie affichera le tableau booléen et son type de données correspondant.

Boolean array: [ True False  True]
Boolean array dtype: bool

Vous pouvez également vérifier si un type de données appartient à une catégorie générale (comme entier ou à virgule flottante) en utilisant la fonction np.issubdtype(). Ceci est utile pour écrire des fonctions qui peuvent gérer plusieurs types numériques.

Résumé

Dans ce laboratoire, vous avez appris les bases du travail avec les types de données dans NumPy. Vous comprenez maintenant :

  • Ce que sont les tableaux NumPy et pourquoi ils sont plus efficaces que les listes Python
  • Comment créer des tableaux en utilisant np.array() et np.arange()
  • Comment vérifier le type de données d'un tableau en utilisant l'attribut .dtype
  • Comment spécifier un type de données lors de la création d'un tableau avec le paramètre dtype
  • Comment convertir le type de données d'un tableau en utilisant la méthode .astype()
  • Les implications en mémoire des différents types de données (int32, int64, float32, float64)
  • Comment travailler avec des tableaux booléens pour le filtrage et les opérations logiques

Une solide compréhension des types de données est essentielle pour écrire du code numérique efficace et précis avec NumPy. Le choix du bon type de données peut avoir un impact significatif sur l'utilisation de la mémoire et les performances de calcul dans vos projets d'analyse de données.