Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

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 行方向に次元削減
f:id:rare_Remrin:20170512120642p:plain

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]