Die Zeitkomplexität jedes Algorithmus ist sehr wichtig bei der Entscheidung, ob eine Anwendung zuverlässig ist oder nicht. Das schnellstmögliche Ausführen eines großen Algorithmus ist sehr wichtig, wenn es um die Anwendung von Echtzeitausgaben geht. Zu diesem Zweck verfügt Python über mehrere mathematische Standardfunktionen zum schnellen Ausführen von Operationen an ganzen Datenarrays, ohne dass Schleifen geschrieben werden müssen. Eine solche Bibliothek, die eine solche Funktion enthält, ist numpy . Mal sehen, wie wir diese Standardfunktion im Fall der Vektorisierung verwenden können.
Was ist Vektorisierung?
Die Vektorisierung wird verwendet, um den Python-Code zu beschleunigen, ohne eine Schleife zu verwenden. Die Verwendung einer solchen Funktion kann dazu beitragen, die Ausführungszeit Ihres Codes zu minimieren. An einem Vektor werden verschiedene Operationen durchgeführt, wie z. B. das Punktprodukt von Vektoren, das auch als Punktprodukt bekannt ist, weil es eine einzige Ausgabe erzeugt, die äußere Produkte ergibt in einer quadratischen Messmatrix. gleich der Länge X der Länge der Vektoren, Multiplikation mit einem Element, was das Produkt ergibt. Das Element der Indizes und die Dimension der Matrix bleiben unverändert.
Wir werden Sehen Sie, wie klassische Methoden länger brauchen als gewöhnliche Funktionen, indem Sie ihre Verarbeitungszeit berechnen.
outer (a, b): Berechnen Sie das äußere Produkt zweier Vektoren.
multiplizieren (a, b): Matrixprodukt zweier Arrays.
Punkt (a, b): Punktprodukt zweier Arrays.
Nullen ((n, m)): Gibt eine Matrix gegebener Form und Typs zurück, gefüllt mit Nullen.
process_time (): Gibt den Wert (in Bruchteilen von Sekunden) der Summe der System- und Benutzer-CPU-Zeit des aktuellen Prozesses zurück. Die während des Schlafs verstrichene Zeit ist nicht enthalten.
Punktprodukt:
Punktprodukt — Es ist eine algebraische Operation, bei der zwei Vektoren gleicher Länge multipliziert werden, sodass eine Zahl entsteht. Das Skalarprodukt wird oft als inneres Produkt bezeichnet. Dieses Produkt ergibt eine skalare Zahl. Betrachten wir zwei Matrizen a und b gleicher Länge, das Skalarprodukt wird durch Transponieren der ersten Matrix durchgeführt, und dann wird durchgeführt die Multiplikation der mathematischen Matrix durch a ' (transponiert a) und b,, wie im Bild unten gezeigt.
Visuelle Darstellung des Skalarprodukts —

Hier unten ist der Python-Code:
# Punktprodukt
import
time
import
numpy
import
array
# 8 bytes int
a
=
array.array (
`q`
)
für
i
im
Bereich
(
100000
):
a.append (i);
b
=
array. array (
` q`
)
for
i
im
Bereich
(
100000
,
200000
):
b.append (i)
# klassische Punktproduktimplementierungsvektoren
tic
=
time.process_time ()
dot
=
0.0
;
für
i
in
range
(
len
(a)):
dot
+
=
a [i]
*
b [i]
toc
=
time.process_time ()
print
(
"dot_product ="
+
str
(Punkt));
print
(
"computation time ="
+
str
(
1000
*
(toc
-
tic))
+
"ms"
)
n_tic
=
time .process_time ()
n_dot_product
=
numpy.dot (a, b)
n_toc
=
time.process_time ()
print
(
"n_dot_product ="
+
str
(n_dot_product))
print
(
"Rechenzeit ="
+
str
(
1000
*
(n_toc
-
n_tic))
+
"ms"
)
Exit:
dot_product = 833323333350000,0 Rechenzeit = 35,59449199999999 ms n_dot_p Produkt = 833323333350000 Rechenzeit = 0,15599000000000225 ms
Outdoor-Produkt:
Tensorprodukt zweier Koordinatenvektoren heißt nx 1
und mx 1
dann führt das äußere Produkt des Vektors zu eine rechteckige Matrix nxm
. Wenn zwei Vektoren dieselbe Dimension haben, ist die resultierende Matrix eine quadratische Matrix, wie in der Abbildung gezeigt.
Visuelle Darstellung des externen Produkts —

Unten ist der Python-Code:
Exit: outer_product = [[0. 0. 0. ... , 0. 0. 0.] [200.201.202. ... , 397. 398. 399.] [400. 402. 404. ... , 794. 796. 798.] ..., [39400. 39597. 39794. ... , 78209. 78406. 78603. ] [39600. 39798. 39996. ... , 78606. 78804. 79002.] [39800. 39999. 40198. ... , 79202. 79401.]] Rechenzeit = 39,821617 ms äußeres_Produkt = [[0 0 0 ..., 0 0 0] [200 201 202 ..., 397 398 399] [400 402 404 ..., 794 79 6 798] ..., [39400 39597 39794 ..., 78209 78406 78603] [39600 39798 39996 ..., 78606 78804 79002] [39800 39999 40198 ..., 79003 7401]] Rechenzeit = 0,2809480000000031 ms Elementweises Produkt: Visuelle Darstellung des Wise-Produkt-Elements — ![]() Unten ist der Python-Code:
|
Exit:
< Pre> Element Wise Produkt = [0.00000000E + 00 5.00010000E + 04 1.00004000e + 05 ..., 4.99955001e + 09 4.99970000de + 09 4.99985000e + 09] Rechenzeit = 23.516678000000013ms Element Wise Produkt = [0 50001 100004. .. , 704582713 704732708 704882705] Rechenzeit = 0,2250640000000248 ms