4

次のコードを実行しています

positive_values = values.where(values > 0)  

この例では、要素valuesを含めることができます。nanこのため、次の実行時警告が表示されると思います。

RuntimeWarning: invalid value encountered in greater_equal if not reflexive  

xarrayこれらの警告を抑制する方法はありますか ?

4

2 に答える 2

5

モジュールは、warnings探している機能を提供します。

すべての警告を抑制するには、次のようにします (これが適切でない理由については、John Coleman の回答を参照してください)。

import warnings
warnings.simplefilter("ignore") 
# warnings.simplefilter("ignore", category=RuntimeWarning) # for RuntimeWarning only

抑制を一時的にするには、warnings.catch_warnings()コンテキスト マネージャー内で実行します。

import warnings

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    positive_values = values.where(values > 0)  

コンテキスト マネージャーは、コンテキストに入る前に元の警告設定を保存し、コンテキストを終了するときに設定を戻します。

于 2016-12-13T16:31:40.777 に答える
3

一般的な経験則として、警告は抑制するのではなく注意する必要があります。警告の原因を知っているか、知らないかのどちらかです。警告の原因がわかっている場合は、通常、簡単な回避策があります。警告の原因がわからない場合は、バグがある可能性があります。&この場合、次のように短絡の性質を使用できます。

positive_values = values.where(values.notnull() & values > 0)
于 2016-12-13T16:52:00.727 に答える