note.nkmk.me

NumPy配列ndarrayを任意の最小値・最大値に収めるclip

Date: 2019-02-14 / tags: Python, NumPy

NumPy配列ndarrayの要素の値を任意の範囲内に収めるクリッピング処理を行うにはnp.clip()またはndarrayclip()メソッドを使う。引数に最小値と最大値を指定すると、その範囲外の値は最小値または最大値に置き換えられる。

0.0 ~ 1.00 ~ 255などの範囲内に収めたい場合に便利。

ここでは以下の内容について説明する。

  • np.clip()の使い方
  • ndarrayclip()メソッドの使い方
スポンサーリンク

np.clip()の使い方

第一引数aに処理する配列ndarray、第二引数a_minに最小値、第三引数a_maxに最大値を指定する。

import numpy as np

a = np.arange(10)
print(a)
# [0 1 2 3 4 5 6 7 8 9]

print(np.clip(a, 2, 7))
# [2 2 2 3 4 5 6 7 7 7]

最小値と最大値のどちらか一方のみを指定したい場合はNoneを使う。省略はできない。

print(np.clip(a, None, 7))
# [0 1 2 3 4 5 6 7 7 7]

print(np.clip(a, 2, None))
# [2 2 2 3 4 5 6 7 8 9]

# print(np.clip(a, 2))
# TypeError: clip() missing 1 required positional argument: 'a_max'

クリップされたndarrayを返し、元のndarrayはそのまま変化なし。

a_clip = np.clip(a, 2, 7)
print(a_clip)
# [2 2 2 3 4 5 6 7 7 7]

print(a)
# [0 1 2 3 4 5 6 7 8 9]

ndarrayのclip()メソッドの使い方

ndarrayclip()メソッドも同様。

第一引数minに最小値、第二引数maxに最大値を指定する。

print(a.clip(2, 7))
# [2 2 2 3 4 5 6 7 7 7]

print(a.clip(None, 7))
# [0 1 2 3 4 5 6 7 7 7]

print(a.clip(2, None))
# [2 2 2 3 4 5 6 7 8 9]

np.clip()と異なり、第一引数min、第二引数maxにデフォルト値Noneが設定されているため省略が可能。np.clip()と引数名が微妙に違うので、キーワード引数として引数名で指定する場合は注意。

print(a.clip(2))
# [2 2 2 3 4 5 6 7 8 9]

print(a.clip(min=2))
# [2 2 2 3 4 5 6 7 8 9]

print(a.clip(max=7))
# [0 1 2 3 4 5 6 7 7 7]

np.clip()と同様、クリップされたndarrayを返し、元のndarrayはそのまま変化なし。

a_clip = a.clip(2, 7)
print(a_clip)
# [2 2 2 3 4 5 6 7 7 7]

print(a)
# [0 1 2 3 4 5 6 7 8 9]
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事