【Python】NumPyのwhereを使って、データをフィルタリング!

  • URLをコピーしました!

こんにちは、ぽころーです!

今回は、データ分析でよく使用する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は、データ分析をするときに使用するに便利です。

ある条件を与え、データを加工したいときによく使用します。

複数条件を与えたり、元の値を保持したりと使い方は様々です。

ぜひ今回紹介した内容を理解し、使いこなしていきましょう!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。20代。組み込みエンジニアとして働き始めるも、働き方や業務内容に限界を感じ、 AI,Web3エンジニアを目指して勉強中。 エンジニアとして思うことや、学んだことを発信します。

目次