[解決済み] Numpy 値がNaTかどうかのチェック
2022-03-04 20:04:21
質問
nat = np.datetime64('NaT')
nat == nat
>> FutureWarning: In the future, 'NAT == x' and 'x == NAT' will always be False.
np.isnan(nat)
>> TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
datetime64がNaTであるかどうかを確認するにはどうしたらよいですか? ドキュメントを探しても見つからない。 Pandasがそれを行うことができることを知っているが、私はむしろそのような基本的なもののために依存性を追加したくありません。
解決方法は?
はじめに この回答は、Numpyがバージョン1.11の時に書かれたもので、NAT比較の動作はバージョン1.12から変更されるはずでした。明らかにそうではなかったので、答えの後半部分は間違っています。回答の最初の部分は、新しいバージョンのnumpyには当てはまらないかもしれません。以下のMSeifertの解答を確認したことを確認してください。
初めて比較するときは、必ず警告が出ます。しかし、その間は比較の結果が正しく返されます。
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
警告を表示しないようにしたい場合は catch_warnings コンテキスト・マネージャーを使用します。
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です。 Numpyのバージョン1.12では、なぜかNAT比較の動作が変わっていなかったので、次のコードは矛盾していることが判明しました。
そして最後に、バージョン1.12.0から変更された動作に対応するために、numpyのバージョンを確認する必要があります。
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です。 として MSeifert は、Numpyに含まれる
isnat
関数は、バージョン 1.13 以降のものです。
関連
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python LeNetネットワークの説明とpytorchでの実装
-
Python 入出力と高次代入の基礎知識
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac