スポンサーリンク

Numpyの配列を任意の値の範囲に制限するclip

Numpy

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関数を用いることでできます。以下リンク先を参照ください。

コメント