Pythonで数値を範囲ごとにグループ化するには

やりたいこと

10未満は「0」、
10以上20未満は「1」、
20以上は「2」
のように、
値がどの範囲に入るかを知りたい。

方法

numpyのdigitize()関数を使います。

import numpy as np

範囲を作ります。
10未満、10以上20未満、20以上のグループに分けます。

bins = np.array([10, 20])

数値「0」はどのグループに入るか調べます。

inds = np.digitize(0, bins)
print(inds)
# => 0

数値「15」はどのグループに入るか調べます。

inds = np.digitize(15, bins)
print(inds)
# => 1

数値「25」はどのグループに入るか調べます。

inds = np.digitize(25, bins)
print(inds)
# => 25

数値の配列を渡して、複数の値をまとめて判定します。

x = np.array([0, 15, 25])
inds = np.digitize(x, bins)
print(inds)
# => [0 1 2]

今回のソースコードは次のようになります。

import numpy as np

bins = np.array([10, 20])

inds = np.digitize(0, bins)
print(inds)
# => 0

inds = np.digitize(15, bins)
print(inds)
# => 1

inds = np.digitize(25, bins)
print(inds)
# => 2

x = np.array([0, 15, 25])
inds = np.digitize(x, bins)
print(inds)
# => [0 1 2]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください