Unterschied zwischen np.inf und float ('Inf')

10

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)?

    
AreTor 18.02.2017, 13:07
quelle

1 Antwort

10

TL, DR: Es gibt keinen Unterschied und sie können synonym verwendet werden.

Neben dem gleichen Wert wie math.inf und float('inf') :

%Vor%

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.

Gründe für die Verwendung von np.inf

  1. 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.

  2. 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 :

    %Vor%
  3. 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:

    %Vor%

    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:

    %Vor%

    b würde 24 * 1000000 Bytes (~ 23 MB) mehr Speicher als a verwenden.

  4. 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?

MSeifert 18.02.2017, 13:26
quelle

Tags und Links