こんにちは、ぽころーです!
今回は、データ分析でよく使用するNumPyのwhereについて、紹介します!
whereとは
where は、NumPyライブラリのひとつです。
NumPyのwhereは、データを置換したり、フィルタリングしたいときに使用します。
whereは以下の形で使用します。
numpy.where(条件式, x, y)
第1引数は、条件式
第2引数は、条件式が真(True)の場合に返す配列または値
第3引数は、条件式が偽(False)の場合に返す配列または値
また、x
, y
を省略した場合は条件式が成立したインデックスを返します。
where の使い方
それでは、コードで具体的なwhereの具体的な使い方を見ていきましょう!
実際のコードは以下の通りです。
配列の要素が5以上の場合は、1を返し、それ以外は、0を返すコードです。
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
result = np.where(arr >= 5, 1, 0)
print(result)
実行結果
[[0 0 0]
[0 1 1]
[1 1 1]]
複数条件の場合
whereの条件文には、複数条件も指定できます。
複数条件のコードは以下の通りです。
配列の要素が5以上 かつ 偶数の場合は、1を返し、それ以外は、0を返すコードです。
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
result = np.where((arr >= 5) & (arr % 2 == 0), 1, 0)
print(result)
実行結果
[[0 0 0]
[0 0 1]
[0 1 0]]
元の値を保持する方法
第2引数か第3引数に、配列名を指定することで、配列の元の値を保持することもできます。
以下は、値が5以上の場合は、5に置換し、
5未満の場合は、配列の元の値を保持するサンプルコードです。
第2引数に、配列arr
を指定し、配列の元の値が返るようにしています。
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
result = np.where(arr >= 5, 5, arr)
print(result)
実行結果
[[1 2 3]
[4 5 5]
[5 5 5]]
まとめ
whereは、データ分析をするときに使用するに便利です。
ある条件を与え、データを加工したいときによく使用します。
複数条件を与えたり、元の値を保持したりと使い方は様々です。
ぜひ今回紹介した内容を理解し、使いこなしていきましょう!