Découvrez la bonne efficacité de calcul de la vectorisation en Python

Pourquoi la vectorisation est nécessaire

Lorsqu'il y a des vecteurs à n dimensions w et x, il est inefficace si l'instruction for est utilisée pour calculer $ z = w_1x_1 + w_2x_2 ... w_nx_n $. Lorsqu'il est vectorisé, il peut être calculé efficacement en définissant $ z = w ^ Tx + b $. En Python, vous pouvez comparer avec le code suivant.

import numpy as np
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)

tic = time.time()
c = np.dot(a, b)
toc = time.time()
print(f'{"Vectrized version":20}:{str(1000 * (toc-tic))} ms')

c = 0
tic = time.time()
for i in range(1000000):
    c += a[i] * b[i]
toc = time.time()
print(f'{"For loop":20}:{str(1000 * (toc-tic))} ms')
Vectrized version   :3.9501190185546875 ms
For loop            :1007.7228546142578 ms

Avec calcul exponentiel

Supposons que vous souhaitiez effectuer une opération exponentielle sur un vecteur de dimension 1000000 $ v $.

import numpy as np
import time
import math

v = np.random.rand(1000000)
u = np.zeros((1000000, 1))
tic = time.time()
u = np.exp(v)
toc = time.time()
print(f'{"Vectrized version":20}:{str(1000 * (toc-tic))} ms')

c = 0
tic = time.time()
for i in range(1000000):
    u[i] = math.exp(v[i])
toc = time.time()
print(f'{"For loop":20}:{str(1000 * (toc-tic))} ms')
Vectrized version   :3.992319107055664 ms
For loop            :857.1090698242188 ms

Résumé

Il y a une différence d'environ 300 fois entre la version vectorisée et la version non vectorisée. Quand je veux utiliser for-loop, je veux penser à un moyen d'éviter de l'utiliser.

Recommended Posts

Découvrez la bonne efficacité de calcul de la vectorisation en Python
Vérifiez le comportement du destroyer en Python
J'ai comparé le temps de calcul de la moyenne mobile écrite en Python
Le résultat de l'installation de python sur Anaconda
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
Sortie du nombre de cœurs de processeur en Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Récupérer l'appelant d'une fonction en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
Résultat du calcul après la virgule décimale en Python
Copiez la liste en Python
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
L'histoire de la lecture des données HSPICE en Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Résolution d'équations de mouvement en Python (odeint)
Sortie sous la forme d'un tableau python
le zen de Python
Calculer la date avec python
Calculer les dates en Python
Comment obtenir le nombre de chiffres en Python
Calcul de l'écart type et du coefficient de corrélation en Python
[python] Récupère la liste des classes définies dans le module
L'histoire de FileNotFound en Python open () mode = 'w'
[python] Calcul des mois et des années de différence de date / heure
Apprenez le modèle de conception «Chaîne de responsabilité» en Python
Implémenter la solution de l'algèbre de Riccati en Python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Ne pas être conscient du contenu des données en python
Reproduire l'exemple d'exécution du chapitre 4 de Hajipata en Python
Utilisons les données ouvertes de "Mamebus" en Python
Implémentation de l'algorithme "Algorithm Picture Book" en Python3 (Heap Sort Edition)
[Python] Affiche toutes les combinaisons d'éléments de la liste
Obtenez l'URL de la destination de la redirection HTTP en Python
Un mémorandum sur la mise en œuvre des recommandations en Python
Reproduire l'exemple d'exécution du chapitre 5 de Hajipata en Python
Pour faire l'équivalent de Ruby ObjectSpace._id2ref en Python
Vérifiez la nature atrophique de la distribution de probabilité en Python
Vers la retraite de Python2
Trouver des erreurs en Python
Calcul de la valeur de jeu de cisaillement en Python
Jugement d'équivalence d'objet en Python
Implémentation du tri rapide en Python
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
Essayez de gratter les données COVID-19 Tokyo avec Python
Découvrez la largeur apparente d'une chaîne en python
[Python] Fonctionnalisation de la formule de Heron et calcul de la surface maximale
Mesurons le résultat de l'exécution du programme avec C ++, Java, Python.
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
[Mémo] Le mystère des instructions d'affectation cumulative dans les fonctions Python
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Calculez des millions de chiffres dans la racine carrée de 2 avec python
Avoir le graphique d'équation de la fonction linéaire dessiné en Python
Implémentation de l'algorithme de "Algorithm Picture Book" en Python3 (Bubble Sort)