Skip to content

„inf“ für Unendlichkeit in Python

Python

In Python können Sie inf für unendlich verwenden.

Dieser Artikel Das Erstellen, Bedienen, Prüfen und Vergleichen von Infinity inf.

  • Infinity inf vom Float-Typ
    • Negative Unendlichkeit
    • In andere Typen umwandeln
  • Unendlich inf erstellen
    • float(‚inf‘)
    • Float, der den Maximalwert überschreitet
    • Math-Modul in der Standardbibliothek:math.inf
    • NumPy:np.inf
  • Operationen mit unendlicher Inf
  • Prüfen Sie, ob X unendlich ist inf:==, math.isinf(), np.isinf()
    • == Betreiber
    • math.isinf()
    • np.isinf(), np.isposinf(), np.isneginf(), np.isfinite()


  • Vergleiche mit unendlicher Inf
    • Vergleichen Sie mit Fließkommazahl Float
    • Vergleiche mit Nan
    • Vergleichen mit Integer int

Infinity inf vom Float-Typ

In Python enthält der Float-Typ (Gleitkommazahlen) inf, was für unendlich steht.

Sie können inf durch float(‚inf‘) erstellen. Andere Möglichkeiten werden später beschrieben.

f_inf = float('inf')

print(f_inf)
# inf

print(type(f_inf))
# <class 'float'>

Negative Unendlichkeit

Negative Unendlichkeit kann durch Hinzufügen von – zur Unendlichkeit inf dargestellt werden.

f_inf_minus = -float('inf')

print(f_inf_minus)
# -inf

print(type(f_inf_minus))
# <class 'float'>

In andere Typen umwandeln

Normalerweise kann Float mit int() in eine Ganzzahl int konvertiert werden, aber inf kann nicht in int konvertiert werden.

# print(int(f_inf))
# OverflowError: cannot convert float infinity to integer

Beachten Sie, dass integer int in Python3 keine Obergrenze hat.

inf kann mit str() in den String str umgewandelt werden. Es wird in ‚inf‘ umgewandelt.

print(str(f_inf))
# inf

print(type(str(f_inf)))
# <class 'str'>

Unendlich inf erstellen

Es gibt mehrere Möglichkeiten, inf zu erstellen.

float(‚inf‘)

Wie im obigen Beispiel gezeigt, can SIE inf erstellen, indem SIE die Zeichenfolge „inf“ für float() angeben.

Sie können auch „unendlich“ verwenden. Klein- und Großbuchstaben können gemischt werden (Groß- und Kleinschreibung wird nicht beachtet).

print(float('inf'))
# inf

print(float('infinity'))
# inf

print(float('INF'))
# inf

print(float('INFinity'))
# inf

Float, der den Maximalwert überschreitet

Fließkommazahlen, die den maximalen Wert von float überschreiten, werden automatisch als inf behandelt.

import sys

f_inf_num = sys.float_info.max * 2

print(f_inf_num)
# inf

sys.float_info.max WIRD verwendet, um den maximalen Wert von Float zu erhalten.

Math-Modul in der Standardbibliothek:math.inf

Sie können inf als math.inf erstellen, ohne dass Sie das Math-Modul der Standardbibliothek importieren. math.inf ist auch ein Float-Typ, kein spezieller Typ.

import math

print(math.inf)
# inf

print(type(math.inf))
# <class 'float'>

print(float('inf') == math.inf)
# True

NumPy:np.inf

Sie können auch mit NumPy erstellen. np.inf ist auch ein Float, kein spezieller Typ.

import numpy as np

print(np.inf)
# inf

print(type(np.inf))
# <class 'float'>

print(float('inf') == np.inf)
# True

Operationen mit unendlicher Inf

Addition, Subtraktion, Multiplikation, Division und Potenzierung can with infinite inf durchgeführt Werden.

Ergänzung

Egal, was Sie zu unendlich inf hinzufügen, das Ergebnis ist unendlich inf.

print(float('inf') + 100)
# inf

print(float('inf') + float('inf'))
# inf

Subtraktion

Subtrahieren Sie unendlich inf von unendlich inf, um nan zu erhalten. nan ist ebenfalls ein Float-Typ und steht für Not a Number.

Wenn Sie einen anderen Wert von unendlich inf subtrahieren, ist das Ergebnis inf.

print(float('inf') - 100)
# inf

print(float('inf') - float('inf'))
# nan

print(type(float('inf') - float('inf')))
# <class 'float'>

Multiplikation

Infinity inf multipliziert mit 0 ist nan. Wenn Sie mit einer anderen Zahl multiplizieren, erhalten Sie unendliche Inf.

print(float('inf') * 2)
# inf

print(float('inf') * float('inf'))
# inf

print(float('inf') * 0)
# nan

Aufteilung

Unendlich inf geteilt durch unendlich inf ist nan. Teilen von 0 durch unendlich inf ist 0. Wenn Sie durch 0 teilen, wird ein Fehler ausgegeben.

Andernfalls ist das Ergebnis unendlich inf.

print(float('inf') / 2)
# inf

print(float('inf') / float('inf'))
# nan

print(0 / float('inf'))
# 0.0

# print(float('inf') / 0)
# ZeroDivisionError: float division by zero

Potenzierung

Unendlich inf hoch 0 ist 1. 1 hoch inf ist 1. 0 hoch inf ist 0.

Andernfalls ist das Ergebnis unendlich inf.

print(float('inf') ** 2)
# inf

print(float('inf') ** float('inf'))
# inf

print(float('inf') ** 0)
# 1.0

print(2 ** float('inf'))
# inf

print(1 ** float('inf'))
# 1.0

print(0 ** float('inf'))
# 0.0

Prüfen Sie, ob X unendlich ist inf:==, math.isinf(), np.isinf()

Verwenden Sie als Beispiele unendliche und nicht unendliche Werte. eXXX bedeutet 10 hoch XXX.

import math
import numpy as np

print(1e1000)
# inf

print(1e100)
# 1e+100

== Betreiber

Sie können mit == prüfen, ob ein Wert unendlich inf ist.

print(1e1000 == float('inf'))
# True

print(1e100 == float('inf'))
# False

Es gibt mehrere Möglichkeiten, ein unendliches Inf zu erstellen, aber da sie alle vom gleichen Float-Typ sind, spielt es keine Rolle, welche SIE verwenden.

print(float('inf') == math.inf == np.inf)
# True

print(1e1000 == math.inf)
# True

print(1e100 == math.inf)
# False

Außerdem sind, wie oben erwähnt, viele der arithmetischen Ergebnisse von unendlich inf unendlich inf, sodass der folgende Ausdruck ebenfalls wahr ist.

print(float('inf') == float('inf') * 100)
# True

math.isinf()

Das Math-Modul stellt die Funktion math.isinf() zur Verfügung.

math.isinf() gibt True sogar für negative Unendlichkeit zurück.

print(math.isinf(1e1000))
# True

print(math.isinf(1e100))
# False

print(math.isinf(-1e1000))
# True

np.isinf(), np.isposinf(), np.isneginf(), np.isfinite()

NumPy bietet np.isinf(), np.isposinf(), np.isneginf() und np.isfinite().

np.isinf() gibt True für positive und negative Unendlichkeit zurück, np.isposinf() gibt True für positive Unendlichkeit zurück, np.isneginf() gibt True für negative Unendlichkeit zurück und np.isfinite() gibt True für endliche Werte zurück.

Jede Funktion akzeptiert ein Array-ähnliches Objekt wie ein NumPy-Array ndarray oder eine Liste als Argument. Es wird ein ndarray zurückgegeben, dessen Elemente True und False sind.

a = np.array([1, np.inf, -np.inf])
print(a)
# [  1.  inf -inf]

print(np.isinf(a))
# [False  True  True]

print(np.isposinf(a))
# [False  True False]

print(np.isneginf(a))
# [False False  True]

print(np.isfinite(a))
# [ True False False]

Sie können auch einen Skalarwert wie math.isinf() angeben.

print(np.isinf(1e1000))
# True

np.nan_to_num(), das unendlich durch einen beliebigen Wert ersetzt, ist ebenfalls vorhanden.

Standardmäßig werden unendliche Werte durch die kleinsten endlichen Werte ersetzt. Sie können den zu ersetzenden Wert für die Argumente posinf und neginf angeben, die in NumPy1.17 hinzugefügt wurden.

print(np.nan_to_num(a))
# [ 1.00000000e+000  1.79769313e+308 -1.79769313e+308]

print(np.nan_to_num(a, posinf=1e100, neginf=-1e100))
# [ 1.e+000  1.e+100 -1.e+100]

Standardmäßig WIRD ein neues Ndarray erstellt, aber wenn das zweite Argument copy auf False gesetzt ist, wird das ursprüngliche Ndarray aktualisiert.

np.nan_to_num(a, copy=False)
print(a)
# [ 1.00000000e+000  1.79769313e+308 -1.79769313e+308]

Beachten Sie, dass np.nan_to_num() auch den fehlenden Wert nan ersetzt, wie der Name schon sagt. Nichts finden Sie im folgenden Artikel.

Vergleiche mit unendlicher Inf

Sie können unendlich inf und andere Werte mit Vergleichsoperatoren (>, < usw.) vergleichen.

Infinity inf ist vergleichbar mit float- und int-Werten und größer als alle anderen außer nan. Jedes Ergebnis im Vergleich zu nan ist falsch.

Vergleichen Sie mit Fließkommazahl Float

Verwenden Sie als Beispiel den maximalen Wert von Float.

Infinity inf ist größer als der Maximalwert von float, und negativ unendlich ist kleiner als der Minimalwert von float.

import sys

print(sys.float_info.max)
# 1.7976931348623157e+308

print(float('inf') > sys.float_info.max)
# True

print(-float('inf') < -sys.float_info.max)
# True

Vergleiche mit Nan

nan ist ein spezieller Wert vom Typ float, der mit float(’nan‘) erzeugt werden kann.

print(float('nan'))
# nan

print(type(float('nan')))
# <class 'float'>

Der Vergleich mit nan ist immer falsch.

print(float('inf') > float('nan'))
# False

print(float('inf') < float('nan'))
# False

print(float('inf') == float('nan'))
# False

Vergleichen mit Integer int

Infinity inf kann auch mit integer int aufgenommen werden.

print(float('inf') > 100)
# True

Da es in Python3 keine Mac-Grenze für Integer Int gibt, ist es möglich, Werte zu speichern, sterben den Maximalwert von Float überschreiten, aber Infinity Inf ist größer als ein solcher Wert.

large_int = int(sys.float_info.max) * 10

print(large_int)
# 1797693134862315708145274237317043567980705675258449965989174768031572607800285387605895586327668781715404589535143824642343213268894641827684675467035375169860499105765512820762454900903893289440758685084551339423045832369032229481658085593321233482747978262041447231687381771809192998812504040261841248583680

print(type(large_int))
# <class 'int'>

print(large_int > sys.float_info.max)
# True

print(float('inf') > large_int)
# True

Beachten Sie, dass Integer-Int-Werte, die kleiner als der Maximalwert von Float sind, mit float() in Float converted Werden können, Integer-Int-Werte, die größer als der Maximalwert jedoch von Float sind, can nicht in Float converted werden.

print(float(10**308))
# 1e+308

# print(float(10**309))
# OverflowError: int too large to convert to float