ndarray 配列と where についてです。
- 目次 -
スポンサーリンク
条件にマッチするインデックスを取得
値を取得
ndarray 配列から任意の条件で値を取り出すには [] の中に条件を書いて
1 2 3 4 5 6 7 8 |
import numpy as np data = np.array([100, 200, 300, 400, 500]) data[data < 300] #-------------------- # array([100, 200]) #-------------------- |
インデックスを取得
一方、値ではなくインデックスがほしい場合は where を使います。
1 2 3 4 |
np.where(data < 300) #------------------------------- # (array([0, 1], dtype=int64),) #------------------------------- |
ちなみに (data < 300).nonzero() でも同じくインデックスを取得できますが
1 2 3 4 |
(data < 300).nonzero() #------------------------------- # (array([0, 1], dtype=int64),) #------------------------------- |
where のほうがパッと見わかりやすい気がします。
3項演算子ふうに
where で3項演算子のようなこともできます。
引数は3つ
- 条件
- 真の場合の値
- 偽の場合の値
1 2 3 4 |
np.where(data < 300, data / 10, data * 10) #--------------------------------------- # array([ 10, 20, 3000, 4000, 5000]) #--------------------------------------- |