Python Numpy.where()関数
Sohaib Atiq
2023年1月30日
NumPy
-
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]
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe