Table des matières
Qu'est-ce que la vectorisation ? " >Qu'est-ce que la vectorisation ?
Somme des nombres" >Somme des nombres
Opérations mathématiques" >Opérations mathématiques
Instructions If-else " >Instructions If-else
Résoudre les réseaux d'apprentissage automatique/d'apprentissage profond" >Résoudre les réseaux d'apprentissage automatique/d'apprentissage profond
Conclusion" >Conclusion
Maison développement back-end Tutoriel Python Utiliser la vectorisation pour remplacer les boucles en python

Utiliser la vectorisation pour remplacer les boucles en python

Apr 14, 2023 pm 07:07 PM
循环 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.

Utiliser la vectorisation pour remplacer les boucles en python


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
Copier après la connexion
## 使用矢量化
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
Copier après la connexion

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.

Utiliser la vectorisation pour remplacer les boucles en python

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()
Copier après la connexion

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 秒
Copier après la connexion
## 使用矢量化
start = time.time() 
df[ "ratio" ] = 100 * (df[ "d" ] / df[ "c" ]) 

end = time.time() 
print (end - start) 
### 0.12 秒
Copier après la connexion

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 秒
Copier après la connexion
## 矢量化
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 秒
Copier après la connexion

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

Utiliser la vectorisation pour remplacer les boucles en python

m1, m2, m3… sont déterminées en résolvant l'équation ci-dessus en utilisant des millions de valeurs correspondant à x1, x2, x3…

Utiliser la vectorisation pour remplacer les boucles en python

Utiliser la vectorisation pour remplacer les boucles en python

import numpy as np 
# 设置 m 的初始值
m = np.random.rand( 1 , 5 ) 

# 500 万行的输入值
x = np.random.rand( 5000000 , 5 )
Copier après la connexion
## 使用循环
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 秒
Copier après la connexion
## 矢量化
tic = time.process_time() 

#dot product
np.dot(x,mT) 

toc = time.process_time() 
print ( "计算时间 = " + str ((toc - tic)) + "seconds" ) 

####计算时间 = 0.107 秒
Copier après la connexion

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.

Utiliser la vectorisation pour remplacer les boucles en python

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Maîtrisez les touches de raccourci de remplacement de PyCharm en 5 minutes et augmentez facilement votre vitesse de programmation ! Maîtrisez les touches de raccourci de remplacement de PyCharm en 5 minutes et augmentez facilement votre vitesse de programmation ! Feb 22, 2024 am 10:57 AM

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.

Guide du débutant PyCharm : analyse complète des fonctions de remplacement Guide du débutant PyCharm : analyse complète des fonctions de remplacement Feb 25, 2024 am 11:15 AM

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

Remplacer le nom de classe d'un élément à l'aide de jQuery Remplacer le nom de classe d'un élément à l'aide de jQuery Feb 24, 2024 pm 11:03 PM

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 L'expression lambda sort de la boucle Feb 20, 2024 am 08:47 AM

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 remplace les touches de raccourci pour rendre la programmation plus pratique ! PyCharm remplace les touches de raccourci pour rendre la programmation plus pratique ! Feb 21, 2024 pm 12:03 PM

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

Comment remplacer un mot dans Excel en utilisant Python ? Comment remplacer un mot dans Excel en utilisant Python ? Sep 16, 2023 pm 10:21 PM

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

PHP renvoie toutes les valeurs du tableau pour former un tableau PHP renvoie toutes les valeurs du tableau pour former un tableau Mar 21, 2024 am 09:06 AM

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

Révéler le secret pour remplacer rapidement du code dans PyCharm Révéler le secret pour remplacer rapidement du code dans PyCharm Feb 25, 2024 pm 11:21 PM

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

See all articles