Wenn Sie zum ersten Mal einen Vergleich durchführen, haben Sie immer eine Warnung. Aber in der Zwischenzeit zurückVergleichsErgebnis korrekt ist:
import numpy as np
nat = np.datetime64('NaT')
def nat_check(nat):
return nat == np.datetime64('NaT')
nat_check(nat)
Out[4]: FutureWarning: In the future, 'NAT == x' and 'x == NAT' will always be False.
True
nat_check(nat)
Out[5]: True
Wenn Sie die Warnung zu unterdrücken möchten, können Sie den catch_warnings Kontext-Manager verwenden:
import numpy as np
import warnings
nat = np.datetime64('NaT')
def nat_check(nat):
with warnings.catch_warnings():
warnings.simplefilter("ignore")
return nat == np.datetime64('NaT')
nat_check(nat)
Out[5]: True
EDIT: Aus irgendeinem Grund Verhalten von NAT Vergleich in Numpy Version 1.12 wurde nicht geändert, daher erwies sich der nächste Code als inkonsistent.
Und schließlich könnten Sie überprüfen numpy Version seit Version 1.12.0 verändertes Verhalten zu handhaben:
def nat_check(nat):
if [int(x) for x in np.__version__.split('.')[:-1]] > [1, 11]:
return nat != nat
with warnings.catch_warnings():
warnings.simplefilter("ignore")
return nat == np.datetime64('NaT')
EDIT: Wie
MSeifert erwähnt, Numpy enthält
isnat
Funktion seit Version 1.13.
Sie mit 'np.datetime64 vergleichen können ('NaT')' tatsächlich: 'nat == np.datetime64 ('NaT') 'Ausgabe:' True'. –
Verwenden Sie 1.11.1? NaTs können nicht mehr verglichen werden: https://github.com/numpy/numpy/blob/master/doc/release/1.11.0-notes.rst – user65
Ich entschuldige mich, es war meine Unaufmerksamkeit. 1. Jetzt können Sie 'nat == nat' vergleichen und es wird' True' zurückgegeben. 2. Wie im GitHub in 'numpy 1.12.0' gesagt, können Sie' NaT' trotzdem vergleichen: 'nat! = Np.datetime64 ('NaT')' liefert 'True', ansonsten alle Vergleiche NaT wird False zurückgeben. Also, die endgültige Schlussfolgerung: Zuerst müssen Sie die Version von numpy prüfen und dann auswählen, wie Sie 'NaT's vergleichen. –