外縁部:re

学んだことのメモです: Notebook of Study

narray の要素同士の比較について

if文の条件式の中でnumpy のアレイ同士の比較をしたところ

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

と言われました。

import numpy as np
a = np.array([1,2])
b = np.array([1,3])
if a == b:
    pass

としすると発生しました。 アレイ同士を比較すると

a == b
# array([ True, False], dtype=bool)

と要素間の比較になるため(最初の要素が1同士なのでTrue, 2番目の要素が2と3だからFalse)、真偽値が曖昧だからダメ、と怒られたようです。 これを真偽を返すようにするためには

np.all(a == b)
# False
np.any(a == b)
# True

とすればいいようです。 all()は全件一致時のみTrue, any()は1件でも一致があればTrueを返す、とのこと。