pythonでnumpyを使ったプログラミングをしていてエラーの意味がわからなくて
ハマったのでメモ。
やりたいことは、配列同士の比較して一致してるかどうかを判定すること。
data = [1,2] data2 = [1,3] data == data2 => False bool(data == data2) => False np_data = np.array([1,2]) np_data2 = np.array([1,3]) np_data == np_data2 => array([True, False], dtype=bool) bool(np_data == np_data2) => ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
numpyのarrayでは要素同士の比較になるため、boolコンテキストで評価すると
1個より多い真偽値は曖昧となってしまうというエラーだった。
上記の例だと、np_data == np_data2はTrueなのかFalseなのか曖昧ということ。
じゃあ、全部TrueもしくはFalseだったらどうなるか?
np_data3 = np.array([4,5]) np_data == np_data3 => array([False, False], dtype=bool) bool(np_data == np_data3) => ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
やっぱりエラーとなる。
numpyのararyは要素同士の比較であることに注意しよう!