Python Numpy.where()関数

Sohaib Atiq 2023年1月30日
  1. numpy.where() の構文
  2. コード例:[x, y] なしの numpy.where()
  3. コード例:1 次元配列の numpy.where()
  4. コード例:2 次元配列を使用する numpy.where()
  5. コード例:複数の条件を持つ numpy.where()
Python Numpy.where()関数

Numpy.where() 関数は、x の場合、入力条件を満たす配列のインデックスを生成します y は与えられません。または、与えられた条件に基づいて x または y からの配列要素。

numpy.where() の構文

numpy.where(condition, [x, y])

パラメーター

condition array_likeTrue または False
条件が True の場合、出力には x の要素が含まれ、それ以外の場合、出力には y の要素が含まれます
x, y axis の生成元の配列
両方 (x, y) を渡すか、何も渡さません。

戻り値

配列を返します。条件が True の場合、結果には x の要素が含まれ、条件が False の場合、結果には y の要素が含まれます。

x、y が指定されていない場合、配列のインデックスが返されます。

コード例:[x, y] なしの numpy.where()

import numpy as np

m = np.array([1, 2, 3, 4, 5])

n = np.where(m > 3)

print(n)

出力:

(array([3, 4], dtype=int64),)

要素が 3 より大きい場合(a> 3)、m のインデックスを返します。

インデックスではなく要素が必要な場合は、

コード例:1 次元配列の numpy.where()

import numpy as np

m = np.where([True, False, True], [1,2,3], [4, 5, 6])

print(m)

出力:

[1 5 3]

条件が 1 次元配列の場合、Numpy.where() 関数は条件配列を反復処理し、条件要素が True の場合は x から要素を選択し、条件要素の場合は y から要素を選択します条件要素は False です。

Numpy 1 次元配列

コード例:2 次元配列を使用する numpy.where()

import numpy as np

x = np.array([[10, 20, 30], [3, 50, 5]])
y = np.array([[70, 80, 90], [100, 110, 120]])
condition = np.where(x > 20, x, y)

print("Input array :")
print(x)
print(y)
print("Output array with condition applied:")
print(condition)

出力:

Input array :
[[10 20 30]
[ 3 50  5]]
[[ 70  80  90]
[100 110 120]]
Output array with condition applied:
[[ 70  80  30]
[100  50 120]]

x > 20 の条件を x のすべての要素に適用します。True の場合、x の要素は出力として生成され、False の場合、y の要素が生成されます。

それがどのように機能するかを示すために簡単な例を作成します。

import numpy as np

m = np.where(
    [[True, False, True], [False, True, False]],
    [[1, 2, 3], [4, 5, 6]],
    [[7, 8, 9], [10, 11, 12]],
)

print(m)

出力:

[[ 1  8  3]
 [10  5 12]]

Numpy 1 次元配列

コード例:複数の条件を持つ numpy.where()

numpy.where() 関数で 2つまたは複数の条件を適用することもできます。

import numpy as np

m = np.array([1, 2, 3, 4, 5])

n = np.where((m > 1) & (m < 5), m, 0)

print(n)

出力:

[0 2 3 4 0]

m> 1m <5 という複数の条件を適用し、要素が両方の条件を満たす場合に要素を返します。

複数の条件間のロジックは AND&)に限定されず、OR|)も受け入れられます。

import numpy as np

m = np.array([1, 2, 3, 4, 5])

n = np.where((m < 2) | (m > 4), m, 0)

print(n)

出力:

[1 0 0 0 5]