俺言語。

自分にしか理解できない言語で書かれた備忘録

【Python】配列同士の AND や OR, NOT を取る方法

Boolの配列同士でAND, OR, NOTを取る方法。

listとnumpyで方法が違うので覚え書き (こうゆう操作感の違いは何とかしてほしい...)

配列からTrueの部分だけ抽出するときなんかに便利。
oregengo.hatenablog.com

list の場合

戻り値はlist

a = [True, True, False, False]
b = [True, False, True, False]

# AND
c = a and b
> [True, False, True, False]

# OR
c = a or b
> [True, True, False, False]

# Not
c = not a
> False # 反転にはならない。配列全体が評価されてしまうので注意

numpy の場合

戻り値はndarray. 引数はlistも可

a = [True, True, False, False]
b = [True, False, True, False]

# AND
c = np.logical_and(a, b)
> array([ True, False, False, False])

# OR
c = np.logical_or(a, b)
> array([ True,  True,  True, False])

# Not
c = np.logical_not(a)
> array([False, False,  True,  True]) # ちゃんと反転できる