2016-12-06 4 views
2

Ich habe eine Liste, die ich brauche, um sowohl reale Werte als auch komplexe Werte zu berücksichtigen. Allerdings, wenn ich initialisieren nicht das Array numpy.zeros (dtype = complex) verwenden, erhalte ich folgende Fehlermeldung:Wie ignoriert man Python-Warnungen für komplexe Zahlen?

n[2] = 3.7095 + 0.007j 

TypeError: can't convert complex to float

Allerdings, wenn ich die dtype zu komplex richte, erhalte ich die folgende Warnung, wenn ich eine reelle Zahl verwenden (was nicht meinen Code nicht brechen, aber es verursacht eine Menge unnötiger roter Warnmeldungen, die meine Konsole Krempel:

ComplexWarning: Casting complex values to real discards the imaginary part

Wie kann ich die Warnmeldung zu deaktivieren, oder sie setze auf andere Weise, so dass die Werte imaginär oder komplex sein können?

+4

Die Verwendung von reellen Zahlen mit einem Array von komplexen dtype sollte Ihnen kein ComplexWarning geben. Wenn Sie eine solche Warnung erhalten, haben Sie einen anderen Fehler, den Sie uns nicht zeigen. – user2357112

+0

Diese Warnung stammt von: 'numpy.array ([2 + 3j]). Astype (numpy.int)'. Ich denke du hast deine beiden Fälle durcheinander gebracht. Warum nicht einfach komplexe Zahlen für alles verwenden, '2 + 0j' ist genauso" echt "wie' 2'. Wenn Sie nur den richtigen Teil für etwas brauchen, tun Sie einfach 'numpy.array ([2 + 3j]). Real'. – Benjamin

Antwort

1

Sie können diese Warnmeldungen ignorieren verwenden:

import warnings 
warnings.filterwarnings('ignore') 

Dokumentation: https://docs.python.org/2/library/warnings.html

ich den Link der Dokumentation enthalten sind, wie es auch „weiche“ Methoden mit Warnung zu behandeln sind, wie zum Beispiel Drucken nur des ersten Auftretens der Warnung ("einmal"). Es ist auch möglich, in Ihrem Fall nur bestimmte Warnungsklassen (ComplexWarning) zu filtern.

+1

Sicher, aber denken Sie daran, dass die Warnung auch dazu dienen sollte, Ihnen zu sagen, dass Sie Ihre Daten nicht sicher/effizient behandeln. Daher ist es keine gute Idee, die Warnungen zu deaktivieren anstatt den Code zu reparieren. – Benjamin

Verwandte Themen