Wie macht man Exponenten in Python
-
Verwendung des
**
-Operators zur Ausführung von Exponent in Python -
Verwenden Sie
pow()
odermath.power()
, um den Exponenten in Python zu machen -
Verwendung von
numpy.np()
zur Ausführung des Exponenten in Python - Vergleich der Laufzeiten für jede Lösung
Dieses Tutorial zeigt, wie man Potenzierungen in Python durchführt.
In der Mathematik ist die Potenzierung eine Operation, bei der eine Zahl mit sich selbst mehrfach multipliziert wird.
Python bietet integrierte Operationen und Funktionen, die bei der Durchführung der Potenzierung helfen.
Verwendung des **
-Operators zur Ausführung von Exponent in Python
Die meisten Entwickler scheinen zu denken, dass das Caret-Symbol ^
der Operator ist, um die Potenz einer Zahl zu erhalten, da das Caret in der Mathematik als Symbol für Exponenten verwendet wird. In den meisten Programmiersprachen ist das Caret-Symbol jedoch für den bitweisen xor
-Operator reserviert.
In Python wird der Exponentenoperator durch zwei aufeinanderfolgende Sternchen **
zwischen der Basis- und Exponentenzahl symbolisiert.
Die Funktionalität des Exponentenoperators ergänzt das Verhalten des Multiplikationsoperators *
; der Unterschied ist, dass der zweite Operand im Exponentenoperator dazu dient, die Anzahl der Multiplikationen des ersten Operanden mit sich selbst festzulegen.
print(5 ** 6)
Um die Zahl 5
mit sich selbst 6
mal zu multiplizieren, ist der Operator **
zwischen dem Basisoperanden 5
und dem Exponentenoperanden 6
zu verwenden.
Ausgabe:
15625
Lassen Sie uns diesen Operator an verschiedenen Arten von Werten testen.
Wir initialisieren eine ganze Zahl, eine ganze negative Zahl, Null und zwei float
-Werte, die kleiner als 1
und größer als 1
sind. Dann werden wir zufällige ganze Zahlen als ihre Exponenten zuweisen.
num1 = 2
num2 = -5
num3 = 0
num4 = 1.025
num5 = 0.5
print(num1, "^12=", num1 ** 12)
print(num2, "^4=", num2 ** 4)
print(num3, "^9999=", num3 ** 9999)
print(num4, "^-3=", num4 ** -3)
print(num5, "^8=", num5 ** 8)
Ausgabe:
2^12= 4096
-5^4= 625
0^9999= 0
1.025^-3= 0.928599410919749
0.5^8= 0.00390625
Verwenden Sie pow()
oder math.power()
, um den Exponenten in Python zu machen
Eine andere Möglichkeit, Exponenten in Python zu verwenden, ist die Funktion pow()
, die dazu dient, Werte, die durch die Basis und den Exponenten gegeben sind, zu potenzieren. Das Modul math
hat für den gleichen Zweck auch seine eigene Implementierung von pow()
.
Beide Funktionen haben 2 Argumente, wobei das erste Argument für die Basiszahl und das zweite für den Exponenten steht.
Lassen Sie uns versuchen, beide Funktionen mehrmals mit den gleichen Argumenten aufzurufen, damit wir ihre Ausgaben vergleichen können.
import math
print(pow(-8, 7))
print(math.pow(-8, 7))
print(pow(2, 1.5))
print(math.pow(2, 1.5))
print(pow(4, 3))
print(math.pow(4, 3))
print(pow(2.0, 5))
print(math.pow(2.0, 5))
Ausgabe:
-2097152
-2097152.0
2.8284271247461903
2.8284271247461903
64
64.0
32.0
32.0
Der einzige Unterschied in den Ergebnissen ist, daß math.pow()
immer einen float
-Wert zurückgibt, selbst wenn ganzzahlige Argumente übergeben werden, während pow()
nur dann float
zurückgibt, wenn es mindestens ein float
-Argument gibt.
Verwendung von numpy.np()
zur Ausführung des Exponenten in Python
Das Modul NumPy
hat auch seine eigene Funktion power()
zur Potenzierung. power()
akzeptiert die gleichen Argumente wie die pow()
Funktionen, wobei das erste Argument der Basiswert und das zweite Argument der Exponentenwert ist.
Um NumPy
zu benutzen, sollten wir es über pip
oder pip3
installieren.
- Python 2:
pip install numpy
- Python 3:
pip3 install numpy
Lassen Sie uns den gleichen Satz von Beispielen in pow()
unter Verwendung von numpy.power()
ausdrucken.
print(np.power(-8, 7))
print(np.power(2, 1.5))
print(np.power(4, 3))
print(np.power(2.0, 5))
Ausgabe:
-2097152
2.8284271247461903
64
32.0
power()
produziert die gleiche Ausgabe wie die eingebaute Python-Funktion pow()
, wobei sie eine ganze Zahl zurückgibt, wenn keine float
-Argumente vorhanden sind.
Vergleich der Laufzeiten für jede Lösung
Vergleichen wir die Zeit, die es dauert, bis diese 3 Funktionen und der **
-Operator mit einem großen Exponentenwert laufen. Für die Zeitfunktionen importieren wir das Modul timeit
, um die Laufzeit der einzelnen Lösungen auszudrucken.
Der Wert der Basis wird 2
sein, und der Wert für den Exponenten wird 99999
sein.
import numpy as np
import math
import time
start = time.process_time()
val = 2 ** 99999
print("** took", time.process_time() - start, "ms")
start = time.process_time()
val = pow(2, 99999)
print("pow() took", time.process_time() - start, "ms")
start = time.process_time()
val = np.power(2, 99999)
print("np.power() took", time.process_time() - start, "ms")
start = time.process_time()
val = math.pow(2, 99999)
print("math.pow() took", time.process_time() - start, "ms")
Ausgabe:
** took 0.0006959999999999744 ms
pow() took 0.00039000000000000146 ms
np.power() took 1.6999999999989246e-05 ms
Traceback (most recent call last):
File "/Users/rayven/python/timeit.py", line 15, in <module>
val = math.pow(2,99999)
OverflowError: math range error
Das Naheliegendste, was zu beachten ist, ist, dass math.pow()
zu einem OverflowError
geführt hat. Das bedeutet, dass math.pow()
keine großwertigen Exponenten unterstützen kann, höchstwahrscheinlich wegen der Art und Weise, wie dieses Modul die Potenzierung implementiert hat.
Der Unterschied zwischen den 3 anderen Methoden ist trivial, aber aus diesem Beispiel ist np.power()
die schnellste Funktion zur Durchführung der Potenzierung.
Was ist, wenn wir versuchen, den Exponenten auf 9999
zu reduzieren? Lassen Sie uns sehen, was math.pow()
ausgibt.
** took 1.0000000000010001e-05 ms
pow() took 4.000000000004e-06 ms
np.power() took 2.0000000000020002e-05 ms
math.pow() took 2.9999999999752447e-06 ms
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn