web-dev-qa-db-ja.com

nan番号を考慮してnumpy配列の値を条件付きで変更するにはどうすればよいですか?

私の配列は2Dマトリックスであり、負の値と正の値に加えてnumpy.nanの値があります。

>>> array
array([[        nan,         nan,         nan, ..., -0.04891211,
            nan,         nan],
   [        nan,         nan,         nan, ...,         nan,
            nan,         nan],
   [        nan,         nan,         nan, ...,         nan,
            nan,         nan],
   ..., 
   [-0.02510989, -0.02520096, -0.02669156, ...,         nan,
            nan,         nan],
   [-0.02725595, -0.02715945, -0.0286231 , ...,         nan,
            nan,         nan],
   [        nan,         nan,         nan, ...,         nan,
            nan,         nan]], dtype=float32)

そして、すべての正の数を数値に置き換え、すべての負の数を別の数値に置き換えたいと思います。

Python/numpyを使用してそれを実行するにはどうすればよいですか?

(記録のために、マトリックスは、分類を実行したいジオイメージの結果です)

14
user528025

配列にnp.nanがあるという事実は重要ではありません。派手なインデックスを使用するだけです。

x[x>0] = new_value_for_pos
x[x<0] = new_value_for_neg

np.nansを置き換えたい場合:

x[np.isnan(x)] = something_not_nan

ファンシーインデックスの詳細 チュートリアル および NumPyドキュメント

33
Pierre GM

試してください:

a[a>0] = 1
a[a<0] = -1
7
silvado