Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Listes et Tableaux NumPy | Utilisation Efficace des Structures de Données
Techniques d’Optimisation en Python

bookListes et Tableaux NumPy

Le choix de la structure de données appropriée peut avoir un impact significatif sur la vitesse et l'utilisation de la mémoire. Examinons d'abord les listes et comparons-les aux tableaux NumPy afin de comprendre quand et comment utiliser efficacement ces structures de données.

Liste

Une list est l'un des types de données les plus couramment utilisés. Elle fonctionne comme un tableau dynamique, ce qui signifie que sa taille peut augmenter ou diminuer selon les besoins. Les listes sont polyvalentes et offrent un accès et une modification efficaces à des indices arbitraires. Cependant, des opérations telles que l'insertion ou la suppression d'éléments, ainsi que la recherche d'un élément (vérification d'appartenance), peuvent devenir lentes pour de grandes listes. L'exception concerne l'insertion ou la suppression à la fin de la liste, qui reste efficace quelle que soit la taille de la liste.

L'utilisation des listes est recommandée dans les cas suivants :

  • Données ordonnées requises ;
  • Accès ou modification fréquents des éléments par indice ;
  • Nécessité de stocker différents types de données (par exemple, entiers, chaînes de caractères ou objets personnalisés) ;
  • Absence de besoin de test d'appartenance rapide ou d'insertion/suppression rapide au milieu de la liste.
123456789101112131415
my_list = [10, 20, 30] # Access an element by index print(my_list[1]) # Modify an element at a specific index my_list[1] = 50 print(my_list) # Insert an element at the end of the list my_list.append(40) print(my_list) # Remove an element from the end of the list my_list.pop() print(my_list)
copy

Tableau NumPy

Bien que les listes soient polyvalentes, elles ne sont pas les plus efficaces pour les opérations numériques à grande échelle. C'est ici que les tableaux NumPy interviennent.

Les tableaux NumPy sont implémentés en C, ce qui les rend beaucoup plus rapides que les listes pour les opérations numériques. Un facteur clé est la vectorisation, qui permet d'effectuer des opérations sur des tableaux entiers en une seule fois, sans avoir besoin de boucles explicites. Cela conduit à des gains de performance significatifs, en particulier avec de grands ensembles de données.

Voici un exemple d'élévation au carré de chaque élément dans une liste (en utilisant une boucle for à l'intérieur d'une compréhension de liste) et dans un tableau NumPy (en utilisant la vectorisation) :

1234567891011121314151617181920
import numpy as np import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator my_list = list(range(1, 100001)) arr = np.array(my_list) @timeit_decorator(number=100) def square_list(numbers_list): return [x ** 2 for x in numbers_list] @timeit_decorator(number=100) def square_array(numbers_array): return numbers_array ** 2 sqaures_list = square_list(my_list) squares_array = square_array(arr) if np.array_equal(squares_array, sqaures_list): print('The array is equal to the list')
copy

Comme vous pouvez le constater, l'avantage de performance des tableaux NumPy est assez évident.

Lorsqu'il s'agit de données numériques, les tableaux NumPy offrent un avantage en termes de mémoire par rapport aux listes. Ils stockent les données réelles dans des blocs de mémoire contigus, ce qui les rend plus efficaces, en particulier pour les grands ensembles de données. Étant homogènes (même type de données), les tableaux NumPy évitent la surcharge liée aux références d'objets.

En revanche, les listes sont hétérogènes et stockent des références vers des objets dans une mémoire contiguë, tandis que les objets eux-mêmes sont stockés ailleurs. Cette flexibilité introduit une surcharge mémoire supplémentaire lors du traitement de données numériques.

En résumé, le tableau suivant compare les listes et les tableaux NumPy :

1. Vous développez un programme pour gérer une collection d’objets Sensor (classe personnalisée), chacun contenant un timestamp (chaîne de caractères) et une reading (flottant). L’ensemble de données va croître avec le temps et des mises à jour fréquentes des lectures individuelles des capteurs sont nécessaires. Quelle structure de données serait le meilleur choix ?

2. Vous travaillez avec un grand ensemble de données numériques pour un projet d’apprentissage automatique. Quelle structure de données offrirait les meilleures performances pour cette tâche ?

3. Vous analysez des données boursières, qui consistent en des valeurs numériques (prix) au fil du temps. Vous devez effectuer des calculs rapides, tels que la recherche du prix moyen et l’application de transformations mathématiques sur les données. Quelle structure de données choisiriez-vous ?

question mark

Vous développez un programme pour gérer une collection d’objets Sensor (classe personnalisée), chacun contenant un timestamp (chaîne de caractères) et une reading (flottant). L’ensemble de données va croître avec le temps et des mises à jour fréquentes des lectures individuelles des capteurs sont nécessaires. Quelle structure de données serait le meilleur choix ?

Select the correct answer

question mark

Vous travaillez avec un grand ensemble de données numériques pour un projet d’apprentissage automatique. Quelle structure de données offrirait les meilleures performances pour cette tâche ?

Select the correct answer

question mark

Vous analysez des données boursières, qui consistent en des valeurs numériques (prix) au fil du temps. Vous devez effectuer des calculs rapides, tels que la recherche du prix moyen et l’application de transformations mathématiques sur les données. Quelle structure de données choisiriez-vous ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain more about when to use lists versus NumPy arrays?

What are some common mistakes when choosing between lists and NumPy arrays?

Can you give more examples of operations that are faster with NumPy arrays?

Awesome!

Completion rate improved to 7.69

bookListes et Tableaux NumPy

Glissez pour afficher le menu

Le choix de la structure de données appropriée peut avoir un impact significatif sur la vitesse et l'utilisation de la mémoire. Examinons d'abord les listes et comparons-les aux tableaux NumPy afin de comprendre quand et comment utiliser efficacement ces structures de données.

Liste

Une list est l'un des types de données les plus couramment utilisés. Elle fonctionne comme un tableau dynamique, ce qui signifie que sa taille peut augmenter ou diminuer selon les besoins. Les listes sont polyvalentes et offrent un accès et une modification efficaces à des indices arbitraires. Cependant, des opérations telles que l'insertion ou la suppression d'éléments, ainsi que la recherche d'un élément (vérification d'appartenance), peuvent devenir lentes pour de grandes listes. L'exception concerne l'insertion ou la suppression à la fin de la liste, qui reste efficace quelle que soit la taille de la liste.

L'utilisation des listes est recommandée dans les cas suivants :

  • Données ordonnées requises ;
  • Accès ou modification fréquents des éléments par indice ;
  • Nécessité de stocker différents types de données (par exemple, entiers, chaînes de caractères ou objets personnalisés) ;
  • Absence de besoin de test d'appartenance rapide ou d'insertion/suppression rapide au milieu de la liste.
123456789101112131415
my_list = [10, 20, 30] # Access an element by index print(my_list[1]) # Modify an element at a specific index my_list[1] = 50 print(my_list) # Insert an element at the end of the list my_list.append(40) print(my_list) # Remove an element from the end of the list my_list.pop() print(my_list)
copy

Tableau NumPy

Bien que les listes soient polyvalentes, elles ne sont pas les plus efficaces pour les opérations numériques à grande échelle. C'est ici que les tableaux NumPy interviennent.

Les tableaux NumPy sont implémentés en C, ce qui les rend beaucoup plus rapides que les listes pour les opérations numériques. Un facteur clé est la vectorisation, qui permet d'effectuer des opérations sur des tableaux entiers en une seule fois, sans avoir besoin de boucles explicites. Cela conduit à des gains de performance significatifs, en particulier avec de grands ensembles de données.

Voici un exemple d'élévation au carré de chaque élément dans une liste (en utilisant une boucle for à l'intérieur d'une compréhension de liste) et dans un tableau NumPy (en utilisant la vectorisation) :

1234567891011121314151617181920
import numpy as np import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator my_list = list(range(1, 100001)) arr = np.array(my_list) @timeit_decorator(number=100) def square_list(numbers_list): return [x ** 2 for x in numbers_list] @timeit_decorator(number=100) def square_array(numbers_array): return numbers_array ** 2 sqaures_list = square_list(my_list) squares_array = square_array(arr) if np.array_equal(squares_array, sqaures_list): print('The array is equal to the list')
copy

Comme vous pouvez le constater, l'avantage de performance des tableaux NumPy est assez évident.

Lorsqu'il s'agit de données numériques, les tableaux NumPy offrent un avantage en termes de mémoire par rapport aux listes. Ils stockent les données réelles dans des blocs de mémoire contigus, ce qui les rend plus efficaces, en particulier pour les grands ensembles de données. Étant homogènes (même type de données), les tableaux NumPy évitent la surcharge liée aux références d'objets.

En revanche, les listes sont hétérogènes et stockent des références vers des objets dans une mémoire contiguë, tandis que les objets eux-mêmes sont stockés ailleurs. Cette flexibilité introduit une surcharge mémoire supplémentaire lors du traitement de données numériques.

En résumé, le tableau suivant compare les listes et les tableaux NumPy :

1. Vous développez un programme pour gérer une collection d’objets Sensor (classe personnalisée), chacun contenant un timestamp (chaîne de caractères) et une reading (flottant). L’ensemble de données va croître avec le temps et des mises à jour fréquentes des lectures individuelles des capteurs sont nécessaires. Quelle structure de données serait le meilleur choix ?

2. Vous travaillez avec un grand ensemble de données numériques pour un projet d’apprentissage automatique. Quelle structure de données offrirait les meilleures performances pour cette tâche ?

3. Vous analysez des données boursières, qui consistent en des valeurs numériques (prix) au fil du temps. Vous devez effectuer des calculs rapides, tels que la recherche du prix moyen et l’application de transformations mathématiques sur les données. Quelle structure de données choisiriez-vous ?

question mark

Vous développez un programme pour gérer une collection d’objets Sensor (classe personnalisée), chacun contenant un timestamp (chaîne de caractères) et une reading (flottant). L’ensemble de données va croître avec le temps et des mises à jour fréquentes des lectures individuelles des capteurs sont nécessaires. Quelle structure de données serait le meilleur choix ?

Select the correct answer

question mark

Vous travaillez avec un grand ensemble de données numériques pour un projet d’apprentissage automatique. Quelle structure de données offrirait les meilleures performances pour cette tâche ?

Select the correct answer

question mark

Vous analysez des données boursières, qui consistent en des valeurs numériques (prix) au fil du temps. Vous devez effectuer des calculs rapides, tels que la recherche du prix moyen et l’application de transformations mathématiques sur les données. Quelle structure de données choisiriez-vous ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1
some-alt