np.ma.masked_equal
またはmasked_values
は、値が配列ではなくスカラーである場合、Falseのマスクを作成しないという点で少し驚いています。numpy masked_array maskがタイプを変更する
例:
y = np.arange(10)
yy = np.ma.masked_equal(y,0)
は
y = np.arange(1,10)
yy = np.ma.masked_equal(y,0)
スカラーFalseに設定されたマスクでマスク配列を生成しながら、マスクされたアレイは、10のFalseの値の配列であるマスクを小枝もたらします。その結果、私のコードでは、私はマスクは、アレイ内のすべてのエントリと一致するかどうかを事前に知っていないことを考えると、私は明示的にチェックすることを強制しています:
yy=np.ma.masked_values(y,0)
if np.isscalar(yy.mask):
yy.mask=np.zeros(y.shape,dtype=bool)
これは私には過労です。この行動の理由は何ですか?それを避ける方法はありますか?
ありがとうございます。 masked_equalやmasked_valuesを使用することに熱心でしたが、なぜnumpyがmasked_arrayを直接作成するのではなく、メモリ要件を最小限に抑えようとしているのかを理解しているのか分かりません。 –