NumPyの使い方(8) 真偽値
NumPyの真偽値について。
・TrueとFalse
python標準のTrue, Falseでは
False | 数値のゼロ、空文字列、空配列、False |
True | 他すべて |
TrueがFalse以外ということは、
負の値、NaN、infもTrueとなる。
・条件がTrueとなる要素の確認
import numpy as np a1 = np.arange(8).reshape(2, 4) print(a1) # [[0 1 2 3] # [4 5 6 7]] # 2の倍数かどうか(1) print(a1 % 2 == 0) # [[ True False True False] # [ True False True False]] # 2の倍数かどうか(2) print(np.mod(a1, 2) == 0) # [[ True False True False] # [ True False True False]] # 2の倍数の個数 print((a1 % 2 == 0).sum()) #4 a1 = np.arange(20) print(a1 > 10) # [False False False ..., True True True] # 条件がTrueとなる要素の個数 print((a1 > 10).sum()) # 9 # 条件がTrueとなる値の和 print(a1[a1 >10].sum()) # 135 a2 = np.array([1, 2, 3, 4]) a3 = np.array([1, 1, 4, 4]) print(a2 == a3) # [ True False False True]
anyとall
any 1つでもTrueだとTrueを返す。
all すべてがTrueのときのみTrueを返す。
a1 = np.array([[0, 0, 0], [1, 1, 1], [1, 1, 1]]) print(a1) # [[0 0 0] # [1 1 1] # [1 1 1]] print(a1.any()) # True print(a1.all()) # False
any(), all()で軸を指定できる。次元削減になる。
axis=0 列方向に次元削減
axis=1 行方向に次元削減
print(a1.all(axis=0)) # [False False False] print(a1.all(axis=1)) # [False True True] print(a1.any(axis=0)) # [ True True True] print(a1.any(axis=1)) # [False True True]