私はnumpyでログを取って、ログを取る前に負であったエントリを無視したいと思います。負のエントリのログをとると、-Infが返されるので、-Infの値を持つ行列が結果として得られます。私はこの行列の列を合計したいのですが、-Infの値を無視して、どうすればいいのですか?例えばPythonでnumpy/scipyを使用している配列の-Inf値を無視する
、
mylogarray = log(myarray)
# take sum, but ignore -Inf?
sum(mylogarray, 0)
私はnansumがあります知っていると私は同等、infsumようなものが必要。
ありがとうございました。
これを拡張していただけますか?私はその例を理解していない。上記のマスクされた配列をどのように初期化しましたか? – user248237dfsf
@ user248237 - 'numpy.ma.log'などの関数は、自動的にマスクされた配列を作成し、' inf'または 'nan'をマスクするものはマスクされます。しかしこれはあまり明白ではないので、代わりに 'a = np.ma.masked_where(a == np.inf、a)'を実行し、 'b = np.log(a)'を実行するだけです。 (または他の任意の機能)。あるいは、マスクされた配列を避けて 'np.log(a [a!= np.inf])。sum()'を実行することもできます(ブール値配列で索引付けすることができます。 –
@ user248237マスクされた配列を明示的に初期化しませんでした。 'a'は通常のマスクされていない配列です。 'ma.log'は、(実数)対数が未定義のすべての値をマスクします。次に、マスクされたエントリbがマスクされていない場合と同様に、結果のマスクされた配列bが処理されます。 – Philipp