Wie macht man Exponenten in Python

Rayven Esplanada 10 Oktober 2023
  1. Verwendung des **-Operators zur Ausführung von Exponent in Python
  2. Verwenden Sie pow() oder math.power(), um den Exponenten in Python zu machen
  3. Verwendung von numpy.np() zur Ausführung des Exponenten in Python
  4. Vergleich der Laufzeiten für jede Lösung
Wie macht man Exponenten in Python

Dieses Tutorial zeigt, wie man Potenzierungen in Python durchführt.

Python-Exponent

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
Rayven Esplanada avatar Rayven Esplanada avatar

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

Verwandter Artikel - Python Math