


Utiliser la vectorisation pour remplacer les boucles en python
Tous les langages de programmation sont indissociables des boucles. Ainsi, par défaut, nous commençons à exécuter une boucle chaque fois qu’il y a une opération répétitive. Mais lorsqu’il s’agit d’un grand nombre d’itérations (millions/milliards de lignes), utiliser des boucles est un crime. Vous pourriez rester bloqué pendant quelques heures, pour vous rendre compte plus tard que cela ne fonctionne pas. C'est là que l'implémentation de la vectorisation en python devient très critique.
Qu'est-ce que la vectorisation ?
La vectorisation est une technique d'implémentation d'opérations de tableau (NumPy) sur un ensemble de données. En coulisse, il applique l'opération à tous les éléments du tableau ou de la série en même temps (contrairement à une boucle "for" qui opère une ligne à la fois).
Ensuite, nous utilisons quelques cas d'utilisation pour démontrer ce qu'est la vectorisation.
Somme des nombres
##使用循环 import time start = time.time() # iterative sum total = 0 # iterating through 1.5 Million numbers for item in range(0, 1500000): total = total + item print('sum is:' + str(total)) end = time.time() print(end - start) #1124999250000 #0.14 Seconds
## 使用矢量化 import numpy as np start = time.time() # vectorized sum - using numpy for vectorization # np.arange create the sequence of numbers from 0 to 1499999 print(np.sum(np.arange(1500000))) end = time.time() print(end - start) ##1124999250000 ##0.008 Seconds
Le temps d'exécution de la vectorisation est réduit d'environ 18 fois par rapport à l'itération utilisant les fonctions de plage. Cette différence devient encore plus significative lors de l'utilisation de Pandas DataFrame.
Opérations mathématiques
En science des données, lorsqu'ils travaillent avec Pandas DataFrame, les développeurs utilisent des boucles pour créer de nouvelles colonnes dérivées via des opérations mathématiques.
Dans l'exemple ci-dessous, nous pouvons voir à quel point il est facile de remplacer les boucles par la vectorisation pour de tels cas d'utilisation.
DataFrame sont des données tabulaires sous forme de lignes et de colonnes.
Nous créons un DataFrame pandas avec 5 millions de lignes et 4 colonnes remplies de valeurs aléatoires entre 0 et 50.
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint( 0 , 50 , size=( 5000000 , 4 )), columns=( 'a' , 'b' , 'c' , 'd ' )) df.shape # (5000000, 5) df.head()
Créez une nouvelle colonne "ratio" pour trouver le rapport des colonnes "d" et "c".
## 循环遍历 import time start = time.time() # 使用 iterrows 遍历 DataFrame for idx, row in df.iterrows(): # 创建一个新列 df.at[idx, 'ratio' ] = 100 * (row[ "d" ] / row[ "c" ]) end = time.time() print (end - start) ### 109 秒
## 使用矢量化 start = time.time() df[ "ratio" ] = 100 * (df[ "d" ] / df[ "c" ]) end = time.time() print (end - start) ### 0.12 秒
Nous pouvons constater des améliorations significatives avec le DataFrame, l'opération vectorisée étant presque 1000 fois plus rapide par rapport à la boucle en Python.
Instructions If-else
Nous avons implémenté de nombreuses opérations qui nous obligent à utiliser une logique de type "If-else". On peut facilement remplacer cette logique par des opérations vectorisées en python.
Voyons l'exemple suivant pour mieux le comprendre (nous utiliserons le DataFrame que nous avons créé dans le cas d'utilisation 2) :
Imaginons que nous souhaitions créer une nouvelle colonne basée sur certaines conditions sur la colonne existante "a" Colonne " e"
## 使用循环 import time start = time.time() # 使用 iterrows 遍历 DataFrame for idx, row in df.iterrows(): if row.a == 0 : df.at[idx, 'e' ] = row.d elif ( row.a <= 25 ) & (row.a > 0 ): df.at[idx, 'e' ] = (row.b)-(row.c) else : df.at[idx, 'e' ] = row.b + row.c end = time.time() print (end - start) ### 耗时:166 秒
## 矢量化 start = time.time() df[ 'e' ] = df[ 'b' ] + df[ 'c' ] df.loc[df[ 'a' ] <= 25 , 'e' ] = df [ 'b' ] -df[ 'c' ] df.loc[df[ 'a' ]== 0 , 'e' ] = df[ 'd' ]end = time.time() 打印(结束 - 开始) ## 0.29007707595825195 秒
L'opération vectorisée est 600 fois plus rapide par rapport à une boucle python utilisant des instructions if-else.
Résoudre les réseaux d'apprentissage automatique/d'apprentissage profond
L'apprentissage profond nous oblige à résoudre plusieurs équations et problèmes complexes avec des millions et des milliards de lignes à résoudre. Exécuter des boucles pour résoudre ces équations en Python est très lent et la vectorisation est la meilleure solution.
Par exemple, pour calculer les valeurs y pour des millions de lignes dans l'équation de régression linéaire multiple suivante :
Nous pouvons utiliser la vectorisation au lieu de la boucle. Les valeurs de
m1, m2, m3… sont déterminées en résolvant l'équation ci-dessus en utilisant des millions de valeurs correspondant à x1, x2, x3…
import numpy as np # 设置 m 的初始值 m = np.random.rand( 1 , 5 ) # 500 万行的输入值 x = np.random.rand( 5000000 , 5 )
## 使用循环 import numpy as np m = np.random.rand(1,5) x = np.random.rand(5000000,5) total = 0 tic = time.process_time() for i in range(0,5000000): total = 0 for j in range(0,5): total = total + x[i][j]*m[0][j] zer[i] = total toc = time.process_time() print ("Computation time = "+ str ((toc - tic)) + "seconds" ) ####计算时间 = 27.02 秒
## 矢量化 tic = time.process_time() #dot product np.dot(x,mT) toc = time.process_time() print ( "计算时间 = " + str ((toc - tic)) + "seconds" ) ####计算时间 = 0.107 秒
dot implémente. multiplication matricielle vectorisée sur le backend. C'est 165 fois plus rapide que les boucles en Python.
Conclusion
La vectorisation en python est très rapide et doit être préférée aux boucles chaque fois que nous avons affaire à de très grands ensembles de données.
Au fur et à mesure que vous commencerez à le mettre en œuvre au fil du temps, vous vous habituerez à penser selon des lignes de code vectorisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PyCharm est un environnement de développement intégré Python couramment utilisé avec des fonctions riches et des touches de raccourci qui peuvent aider les développeurs à améliorer l'efficacité de la programmation. Dans le processus de programmation quotidien, la maîtrise des compétences de remplacement des touches de raccourci de PyCharm peut aider les développeurs à accomplir leurs tâches plus rapidement. Cet article vous présentera quelques touches de raccourci de remplacement couramment utilisées dans PyCharm pour vous aider à améliorer facilement votre vitesse de programmation. 1.Remplacement Ctrl+R Dans PyCharm, vous pouvez utiliser la touche de raccourci Ctrl+R pour effectuer des opérations de remplacement.

PyCharm est un puissant environnement de développement intégré Python doté de fonctions et d'outils riches qui peuvent considérablement améliorer l'efficacité du développement. Parmi elles, la fonction de remplacement est l'une des fonctions fréquemment utilisées dans le processus de développement, qui peut aider les développeurs à modifier rapidement le code et à améliorer la qualité du code. Cet article présentera en détail la fonction de remplacement de PyCharm, combinée à des exemples de code spécifiques, pour aider les novices à mieux maîtriser et utiliser cette fonction. Introduction à la fonction de remplacement La fonction de remplacement de PyCharm peut aider les développeurs à remplacer rapidement le texte spécifié dans le code

jQuery est une bibliothèque JavaScript classique largement utilisée dans le développement Web. Elle simplifie les opérations telles que la gestion des événements, la manipulation des éléments DOM et l'exécution d'animations sur les pages Web. Lorsque vous utilisez jQuery, vous rencontrez souvent des situations dans lesquelles vous devez remplacer le nom de classe d'un élément. Cet article présentera quelques méthodes pratiques et des exemples de code spécifiques. 1. Utilisez les méthodes RemoveClass() et AddClass(). JQuery fournit la méthode RemoveClass() pour la suppression.

L'expression Lambda sort de la boucle, des exemples de code spécifiques sont nécessaires en programmation, la structure de boucle est une syntaxe importante qui est souvent utilisée. Cependant, dans certaines circonstances, nous pouvons vouloir sortir de la boucle entière lorsqu'une certaine condition est remplie dans le corps de la boucle, plutôt que de simplement terminer l'itération en cours de la boucle. À l'heure actuelle, les caractéristiques des expressions lambda peuvent nous aider à atteindre l'objectif de sortir de la boucle. L'expression Lambda est un moyen de déclarer une fonction anonyme, qui peut définir une logique de fonction simple en interne. C'est différent d'une déclaration de fonction ordinaire,

PyCharm est un environnement de développement intégré populaire parmi les programmeurs. Il fournit des fonctions et des outils puissants pour rendre la programmation plus efficace et plus pratique. Dans PyCharm, un réglage et un remplacement raisonnables des touches de raccourci sont l'une des clés pour améliorer l'efficacité de la programmation. Cet article explique comment remplacer les touches de raccourci dans PyCharm pour rendre la programmation plus pratique. 1. Pourquoi devrions-nous remplacer les touches de raccourci ? Dans PyCharm, les touches de raccourci peuvent aider les programmeurs à effectuer rapidement diverses opérations et à améliorer l'efficacité de la programmation. Cependant, chacun a des habitudes différentes et certaines personnes peuvent

En Python, nous pouvons remplacer un mot par un autre mot dans Excel à l'aide d'une bibliothèque Python tierce appelée openpyxl. Microsoft Excel est un outil utile pour gérer et analyser les données. Grâce à Python, nous pouvons automatiser certaines tâches de gestion de données Excel. Dans cet article, nous apprendrons comment remplacer un mot dans Excel à l'aide de Python. Avant d'installer openpyxl pour remplacer Word dans Excel, nous devons installer la bibliothèque openpyxl dans le système à l'aide du gestionnaire de packages Python. Pour installer openpyxl, entrez la commande suivante dans le terminal ou l'invite de commande. Pipiniste

Cet article expliquera en détail comment PHP renvoie toutes les valeurs d'un tableau pour former un tableau. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. . Utilisation de la fonction array_values() La fonction array_values() renvoie un tableau de toutes les valeurs d'un tableau. Il ne conserve pas les clés du tableau d'origine. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values sera ["bar","qux"]Utilisation une boucle peut utiliser une boucle pour obtenir manuellement toutes les valeurs du tableau et les ajouter à un nouveau

PyCharm est un environnement de développement intégré Python très apprécié des développeurs. Il offre de nombreuses façons de remplacer rapidement le code, rendant le processus de développement plus efficace. Cet article révélera plusieurs méthodes couramment utilisées pour remplacer rapidement le code dans PyCharm et fournira des exemples de code spécifiques pour aider les développeurs à mieux utiliser ces fonctionnalités. 1. Utilisez la fonction de remplacement PyCharm fournit une fonction de remplacement puissante qui peut aider les développeurs à remplacer rapidement le texte dans le code. Utilisez le raccourci Ctrl+R ou faites un clic droit dans l'éditeur et sélectionnez Re
