2025.7.21 配列要素に対する条件判定【numpy】
配列に対して関係演算子を適用するとブロードキャスト展開された論理値型の配列が返される。この値を用いて条件の部分一致や全一致判定を行うことができる。
np.all(arg1)
np.any(arg1)
arg1 ...論理値型の配列
np.all
np.all は arg1 の全要素が True であるときにTrueを返す。
code:p.py
import numpy as np
x = np.array(3, 3, 2, 3)
mask = x == 2
print(mask)
print(np.all(mask))
print(np.all(x > 2))
'''
False False True False
False
False
'''
np.any
np.any は arg1 のうち1つでも True があればTrueを返す。
code:p.py
import numpy as np
x = np.array(3, 3, 2, 3)
mask = x == 2
print(mask)
print(np.any(mask))
print(np.any(x > 2))
'''
False False True False
True
True
'''
補足
arg1 の形状は自由である。全要素が True であるか、1つでも True があるかで判定が行われる。
code:p.py
import numpy as np
x = np.random.rand(2, 3, 4)
print(np.any(x > 0.9))
'''
[[False False False False
False False False False
False False False False]
[False False True False
False False False False
False False False True]]
True
'''
引数は 論理型として解釈可能な配列であればよい。
code:p.py
import numpy as np
x = np.array(-2, -1, 0, 1, 2)
print(x)
print(np.all(x))
print(np.any(x))
'''
-2 -1 0 1 2
False
True
'''
リストに対して関係演算子を適用したときは、配列の場合とは異なる結果が返されるの、エラーは吐かずに意図とは異なる結果が返されるので注意。
code:p.py
import numpy as np
x = (3, 3, 2, 3)
print(np.any(x == 2))
'''
False
'''