このエラーは NumPy から発生します。
NumPy では、2 つの配列を<
で比較すると、要素全体の比較の結果である配列が得られます。これは、 で 2 つの配列を追加した場合とまったく同じです+
。
これを見てください:
>>> a = np.array([1, 2, 3])
>>> b = np.array([2, 2, 2])
>>> a+b
array([3, 4, 5])
>>> a < b
array([True, False, False])
それで、それと何をif
するのarray([True, False, False])
ですか?それは真実ではありません、それは間違っていません。これは値のコレクションであり、一部は true で一部は false です。これが、NumPy がまさにそれを示すエラー メッセージを表示する理由です: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
.
ここで実際に何をテストしようとしているのかを決定する必要があります。必要に応じて、おそらく簡単な書き方があります。たとえば、 のすべての値がa
の対応する値より小さいかどうかを知りたい場合、それはb
です(a < b).all()
。しかし、ベクトルとして扱われるa
とのノルムなどを比較したい場合、それは明らかに機能しません。b
または、それらを Python のタプルであるかのように辞書的に比較したい場合。等々。あなたがここで望むかもしれない無限の可能な意味のどれを知らなければ、それを書く方法を誰もあなたに教えることはできません.