Numpyの配列を、任意の値で制限するには、clip
関数を使う。引数に最小値と最大値を指定すると、範囲外の値は最小値か最大値に置き換えられます。
例えば、最小値を0、最大値を1に設定すると範囲は[0, 1]になり、0より小さい値は0に、1より大きい値は1になります。外れ値を修正したい場合などに便利です。
numpy.clipの使い方
第一引数a
に処理する配列、第二引数a_min
に最小値、第三引数a_max
に最大値を指定する。
import numpy as np
a = np.array([-1.0, -0.4, 0.0, 0.3, 0.9])
print(a)
# [-1. -0.4 0. 0.3 0.9]
print(np.clip(a=a, a_min=-0.5, a_max=0.5))
# [-0.5 -0.4 0. 0.3 0.5]
np.clipを使うことで、a_max以上の値はa_maxに、a_min以下の値は、a_minに置き換わる。
最小値、最大値どちらかのみ指定すれば、指定した方のみ制限される。制限したくない方の引数にはNone
入れる必要がある。
print(np.clip(a=a, a_min=-0.5, a_max=None))
# [-0.5 -0.4 0. 0.3 0.9]
print(np.clip(a=a, a_min=None, a_max=0.5))
# [-0.5 -0.4 0. 0.3 0.5]
最小値、最大値に配列を指定すると、要素ごとに制限が適用される。
limit = np.array([-1.2, -0.5, 0.1 , 0.5, 1.0])
print(np.clip(a=a, a_min=limit, a_max=None))
# [-1. -0.4 0.1 0.5 1. ]
print(np.clip(a=a, a_min=None, a_max=limit))
# [-1.2 -0.5 0. 0.3 0.9]
関連記事、関連資料
python-sampler/Numpy-clip at main · take-tech-09/python-sampler
Contribute to take-tech-09/python-sampler development by creating an account on GitHub.
PyTorchで同じことをするには
PyTorchの配列Tesonrで同じことをするには、clamp関数を用いることでできます。以下リンク先を参照ください。
コメント