「python np.where 以上以下」
といった検索でアクセスがありました。
Pythonで数値演算を行う際に使われる外部ライブラリ「NumPy(ナンパイ/ナムパイ)」の、where関数を使って「n以上かつm以下」といったAnd条件を指定するには、どうすればいいのかを調べていらしたのでしょうか。
NumPyのwhere関数でn以上かつm以下のAnd条件を指定する
以下のコードを参考にしてください。
arr = np.array([0, 25, 50, 75, 100])
arr_filter = np.where((arr>=50) & (arr<=75), arr, None)print(arr_filter)
実行すると、
[None None 50 75 None]
と出力されます。
元の配列から、
arr = np.array([0, 25, 50, 75, 100])
50以上かつ75以下のデータはそのまま、条件に合致しないデータはNoneにした、あらたな配列arr_filterを作成して、
arr_filter = np.where((arr>=50) & (arr<=75), arr, None)
arr_filterをprintしています。
条件「50以上かつ75以下」を指定しているのは、
arr_filter = np.where((arr>=50) & (arr<=75), arr, None)
の部分です。
演算子&を使えば、And条件を指定できるということです。
where関数にAnd条件を指定したときの挙動を確認しよう
先ほどのコードにつづけて
arr_bool = np.where((arr>=50) & (arr<=75), True, False)
print(arr_bool)
を実行すると、
[False False True True False]
と出力され、条件「50以上かつ75以下」を判定した結果がよくわかります。
条件に合致したデータに何らかの演算を行うことも可能です。
たとえば、
arr_10x = np.where((arr>=50) & (arr<=75), arr*10, arr)
print(arr_10x)
を実行すると、
[ 0 25 500 750 100]
と出力されます。
条件「50以上かつ75以下」に合致するデータのみ10倍されています。
条件に合致するデータだけの新たな配列を取得するなら
arr_trim = arr[np.where((arr>=50) & (arr<=75))]
です。
このarr_trimをprintすると
[50 75]
と出力されます。
そもそもwhere関数とは
where関数は、条件に合致するインデックス等を返してくれます。
arr_where = np.where((arr>=50) & (arr<=75))
print(arr_where[0])
を実行すると、
[2 3]
と出力されます。
条件「50以上かつ75以下」に合致するインデックスが2と3であると出力されます。
- Newer:apiプロパティを持つxlwingsのクラス一覧
- Older:xlwingsでRangeを返す属性の一覧
Home » Python » NumPyの使い方 » NumPyのwhere関数でn以上かつm以下のAnd条件を指定する