Numerische Warnung bei Integer-Überlauf

9

Nachdem ich hauptsächlich Python benutzt habe, wurde ich dadurch verwöhnt, dass ich mir keine Sorgen über Integer-Überlauf machen musste. Jetzt, da ich numpy benutze, muss ich mich wieder darum kümmern. Ich möchte in Fällen von Überlauf numpy zu Fehler, aber es scheint nicht für int64 zu funktionieren.

%Vor%

Ich könnte immer dtype=object hinzufügen, um diese Probleme zu beheben, aber ich würde denken, dass int64 die meiste Zeit gut genug ist, es ist nur beängstigend, dass es auf diese schwer zu erkennende Weise scheitern kann.

Warum funktioniert seterr nur für int32? Kann ich es für int64 arbeiten lassen?

Der einzige Teil der numpy.seterr Dokumentation, die ich finden kann was darauf hinweisen könnte, warum dies der Fall sein könnte, ist die folgende kurze Passage:

  

Beachten Sie, dass Operationen für Ganzzahl-Skalartypen (z. B. int16) erforderlich sind   behandelt wie Fließkomma und sind von diesen Einstellungen betroffen.

Aber nichts in den Datentypen -Dokumenten würde vorschlagen, dass int32 und int64 irgendwie sind konzeptionell anders. Nicht sicher, ob int64 nicht als "ganzzahliger Skalartyp" betrachtet wird.

    
Dan 14.08.2015, 16:02
quelle

1 Antwort

2

Tatsächlich scheint das Verhalten von der Größe des Int-Typs abhängig zu sein. Hier ist eine Liste, die Ihren Fall enthält und weitere hinzufügt (mit numpy.seterr(all='raise') ).

%Vor%     
Ramon Crehuet 11.01.2016 15:53
quelle

Tags und Links