2

以下は、なぜ xarray がそのようになっているのかを理解することを目的とした哲学的な質問です。


Xarrays で次のことを行う方法がわかりません。

positive_values = values.where(values > 0)  

x-arrays 構文に従い、xarrays を使用して実行したいことを計算しますが、このランタイム警告がスローされます。

RuntimeWarning: invalid value encountered in greater if not reflexive  

私の質問は、Xarray をどのように悪用しているのか ということです。

nans業務をまたいで通勤しているという意味で優れていると主張したいと思います。(欠落しているデータ値の発見または対処を容易にする)

すなわち。

value = np.nan + 1  
final_value = value/2  
#final_value evaluates to 'nan'

これにより、X 配列での表現が非常に便利になります。xarraysデータが欠落している可能性がありますが、何千ものポイントにわたる操作を停止するべきではありません。

>問題なく通勤できないのはなぜnanですか?これが私が望む動作である場合、これを別の方法で実行し、エラーを無視する必要がありますか?

4

1 に答える 1

8

これは意図的な設計上の選択ではなく、修正する必要があります。

NumPy は、NaN との比較を行うときに警告を発行します。これは、少なくとも NaN との比較の仕組みに慣れていない場合、結果が驚くべきものになる可能性があるためです。

In [6]: np.array([1, -1, np.nan]) > 0
/Users/shoyer/conda/envs/xarray-dev/bin/ipython:1: RuntimeWarning: invalid value encountered in greater
  #!/Users/shoyer/conda/envs/xarray-dev/bin/python
Out[6]: array([ True, False, False], dtype=bool)

おそらく、結果が のようなものであればより直感的ですが[True, False, NA]、NumPy には欠損値のサポートが統合されていません。

最近まで ( pandas 0.19で)、pandas は、pandas を使用して操作が行われたかどうかにかかわらず、すべての操作に対してこのタイプの NumPy 警告を無効にしていました。xarray は pandas をインポートするため、これらのエラーは xarray 操作でも抑制されました。ここで、これらの警告を黙らせる独自のコードを追加する必要があります。

更新:これは xarray v0.10 で解決されているはずです。それでも問題が解決しない場合は、 http: //github.com/pydata/xarray/issuesでバグを報告してください。

于 2016-12-14T16:31:16.053 に答える