Pythonで配列を一瞬でフィルタリング!numpy.whereの使い方がわかる!

スポンサーリンク

numpy.where は、条件に基づいて配列の要素を置き換えたり、フィルタリングしたりするために使用されるnumpyの関数です。

基本的な使い方は以下の通りです。

numpy.where(condition[, x, y])
  • condition : 条件式を指定する bool 型のnumpy配列。
  • x, y : 条件が True である場合に返す値を指定するnumpy配列。省略可能です。省略すると、True の場合はその要素の値、False の場合は 0 の値が使用されます。

numpy.where 関数は、条件を満たす要素のインデックスを取得するためにも使用できます。この場合、2つ目の引数として numpy.nonzero 関数を使用することができます。

numpy.where(condition)[0]

このコードは、condition 配列内で条件を満たす要素のインデックスを返します。

例えば、以下のコードは、numpy.where 関数を使用して、配列内の偶数のみを取得します。

import numpy as np

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
even_arr = np.where(arr % 2 == 0, arr, 0)

print(even_arr)
# [0 0 2 0 4 0 6 0 8 0]

このコードでは、arr 配列内の要素が2で割り切れる場合はその値を、それ以外の場合は 0 を返します。これにより、新しい even_arr 配列が生成されます。

また、次のコードでは、条件を満たす要素のインデックスを取得します。

import numpy as np

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
even_indices = np.where(arr % 2 == 0)[0]

print(even_indices)
# [0 2 4 6 8]

このコードでは、arr 配列内の要素が2で割り切れる場合のインデックスを取得しています。[0, 2, 4, 6, 8] が表示されます。

タイトルとURLをコピーしました