Python Numpy.where()関数
Sohaib Atiq
2023年1月30日
-
numpy.where()
の構文 -
コード例:
[x, y]
なしのnumpy.where()
-
コード例:1 次元配列の
numpy.where()
-
コード例:2 次元配列を使用する
numpy.where()
-
コード例:複数の条件を持つ
numpy.where()
Numpy.where()
関数は、x
の場合、入力条件を満たす配列のインデックスを生成します y
は与えられません。または、与えられた条件に基づいて x
または y
からの配列要素。
numpy.where()
の構文
numpy.where(condition, [x, y])
パラメーター
condition |
array_like 、True または 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
です。
コード例: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.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> 1
と m <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]