Python Numpy.where()関数

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

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

numpy.where() の構文

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

パラメーター

condition array_likeTrue または False
条件が True の場合、出力には x の要素が含まれ、それ以外の場合、出力には y の要素が含まれます
x, y 戻り値の生成元の配列
両方 (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]
comments powered by Disqus