cytoのメモ帳

気づいたこと,感じたことを徒然と

NumPy配列の要素を任意の範囲に収める: np.clip()

NumPy配列要素の値を任意の範囲内に収めることをクリップといい,np.clip()メソッドが有用である.
[下限値, 上限値]を与えると下限値以下の値は下限値,上限値以上の値は上限値に固定される.
例えば,[0, 1]の場合は0以下の値は全て0に,1以上の値は全て1に設定される.

np.clip(a, a_min, a_max, out=None)

引数:
a: 元の配列
a_min: 下限値,Noneで下限値なし.
a_max: 上限値,Noneで上限値なし.
out: 出力先の配列(オプション)
戻り値:
クリップされた配列を返す.
元の配列は元のままで変化しない.

サンプルコード

import numpy as np

x = np.arange(1, 10)
x
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.clip(x, 2, 8)
# array([2, 2, 3, 4, 5, 6, 7, 8, 8])
x
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.clip(x, 2, 8, out=x)
# array([2, 2, 3, 4, 5, 6, 7, 8, 8])
x
# array([2, 2, 3, 4, 5, 6, 7, 8, 8])
y = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
np.clip(y, 2, 7)
# array([[2, 2, 3, 4], [5, 6, 7, 7]])