Erleben Sie die gute Berechnungseffizienz der Vektorisierung in Python

Warum Vektorisierung erforderlich ist

Wenn es n-dimensionale Vektoren w und x gibt, ist es ineffizient, wenn die for-Anweisung zur Berechnung von $ z = w_1x_1 + w_2x_2 ... w_nx_n $ verwendet wird. Wenn es vektorisiert ist, kann es effizient berechnet werden, indem $ z = w ^ Tx + b $ gesetzt wird. In Python können Sie mit dem folgenden Code vergleichen.

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

Mit Exponentialberechnung

Angenommen, Sie möchten eine Exponentialoperation für einen 1000000-Dimensionsvektor $ v $ ausführen.

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

Zusammenfassung

Zwischen der vektorisierten Version und der nicht vektorisierten Version besteht ein etwa 300-facher Unterschied. Wenn ich for-loop verwenden möchte, möchte ich mir überlegen, wie ich es vermeiden kann.

Recommended Posts

Erleben Sie die gute Berechnungseffizienz der Vektorisierung in Python
Überprüfen Sie das Verhalten des Zerstörers in Python
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
Das Ergebnis der Installation von Python auf Anaconda
Grundlagen zum Ausführen von NoxPlayer in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
Geben Sie die Anzahl der CPU-Kerne in Python aus
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Holen Sie sich den Aufrufer einer Funktion in Python
Passen Sie die Verteilung jeder Gruppe in Python an
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Berechnungsergebnis nach dem Dezimalpunkt in Python
Kopieren Sie die Liste in Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Die Geschichte des Lesens von HSPICE-Daten in Python
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Lösen von Bewegungsgleichungen in Python (odeint)
Ausgabe in Form eines Python-Arrays
der Zen von Python
Berechnen Sie das Datum mit Python
Berechnen Sie Daten in Python
So ermitteln Sie die Anzahl der Stellen in Python
Berechnung der Standardabweichung und des Korrelationskoeffizienten in Python
[Python] Ruft die Liste der im Modul definierten Klassen ab
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
[Python] Berechnung der Differenz von Datum und Zeit in Monaten und Jahren
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Implementieren Sie die Lösung der Riccati-Algebra in Python
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
Den Inhalt der Daten in Python nicht kennen
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 4 von Hajipata in Python
Verwenden wir die offenen Daten von "Mamebus" in Python
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Heap Sort Edition)
[Python] Gibt alle Kombinationen von Elementen in der Liste aus
Rufen Sie die URL des HTTP-Umleitungsziels in Python ab
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Reproduzieren Sie das Ausführungsbeispiel von Kapitel 5 von Hajipata in Python
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Überprüfen Sie die atrophische Natur der Wahrscheinlichkeitsverteilung in Python
Auf dem Weg zum Ruhestand von Python2
Finde Fehler in Python
Berechnung des Scherspielwerts in Python
Objektäquivalenzbeurteilung in Python
Implementierung der schnellen Sortierung in Python
Über die Funktionen von Python
Die Kraft der Pandas: Python
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
[Python] Herons Formelfunktionalisierung und Berechnung der maximalen Fläche
Lassen Sie uns das Ausführungsergebnis des Programms mit C ++, Java, Python messen.
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
[Memo] Das Geheimnis kumulativer Zuweisungsanweisungen in Python-Funktionen
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
Implementierte den Algorithmus von "Algorithm Picture Book" in Python3 (Bubble Sort)