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]
が表示されます。