Gibt es einen Unterschied zwischen NumPy np.inf
und float('Inf')
?
float('Inf') == np.inf
gibt True
zurück, also scheinen sie austauschbar zu sein, also habe ich mich gefragt, warum NumPy seine eigene "inf" -Konstante definiert hat, und wann sollte ich eine Konstante anstelle der anderen verwenden (unter Berücksichtigung von Stilproblemen)?
Neben dem gleichen Wert wie math.inf
und float('inf')
:
Es hat auch den gleichen Typ:
%Vor%Das ist interessant, weil NumPy auch eigene Fließkommatypen hat:
%Vor% Es hat also den gleichen Wert und den gleichen Typ wie math.inf
und float('inf')
, was bedeutet, dass es synonym ist.
np.inf
Es ist weniger zu tippen:
np.inf
(6 Zeichen) math.inf
(8 Zeichen; neu in Python 3.5) float('inf')
(12 Zeichen) Das bedeutet, wenn Sie bereits NumPy importiert haben, können Sie sich 6 (oder 2) Zeichen pro Vorkommen im Vergleich zu float('inf')
(oder math.inf
) sparen.
Weil es leichter ist, sich daran zu erinnern.
Zumindest ist es für mich viel einfacher, sich an np.inf
zu erinnern, als dass ich float
mit einer Zeichenkette aufrufen muss.
NumPy definiert auch einige zusätzliche Aliase für unendlich:
%Vor%Definiert auch einen Alias für negative Unendlichkeit:
%Vor% Ähnliches gilt für nan
:
Konstanten sind Konstanten
Dieser Punkt basiert auf CPython und könnte in einer anderen Python-Implementierung völlig anders sein.
Eine float
CPython-Instanz benötigt 24 Bytes:
Wenn Sie die gleiche Instanz erneut verwenden können, sparen Sie im Vergleich zu vielen neuen Instanzen viel Speicherplatz. Natürlich ist dieser Punkt stumm, wenn Sie Ihre eigene inf
Konstante erstellen, aber wenn nicht, dann:
b
würde 24 * 1000000 Bytes (~ 23 MB) mehr Speicher als a
verwenden.
Der Zugriff auf eine Konstante ist schneller als das Erstellen der Variablen.
%Vor%Natürlich können Sie Ihre eigene Konstante erstellen, um diesem Punkt zu begegnen. Aber warum sollte es Ärger geben, wenn NumPy das schon für dich getan hat?