1. ホーム
  2. パイソン

学習ノート - ValueError。複数の要素を持つ配列の真偽値は曖昧である

2022-02-23 20:10:39

質問:

私のコードは、2つのnparraysが正確に等しいかどうかを判断しようとしています。

if prediction[i] == Y_test[i]:

実行時のエラーは:

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

<スパン 理由

nparrayが2つあるとします。

a = np.array([1,2,3])
b = np.array([1,3,2])

要素が完全に等しいかどうかを判断するために==記号を使用する場合。

print a==b

その結果、:

[True False False]

各アプリケーションポジションの要素を比較していることがわかります。

同じならTrue、異なるならFalseを返します。

つまり、ソースコードと同等です。

if [True False False]:

ロジックが正しくありません。

エラーメッセージによると、any()またはall()を使用する必要があるとのことです。

次のように、まだ2つのnparrayがあると仮定します。

a = np.array([1,2,3])
b = np.array([1,3,2])

実行する。

print any(a==b)
print all(a==b)

対応する結果は:

True
False

どういうことかというと、実に簡単なことなのです。

まず、a==bの意味は  [真偽不明]です。

その後

any([True False False])

があれば、Trueを返すことを示す。

all([True False False])

すべての要素がTrueを返す場合はTrue、それ以外の場合はFalseを返すことを示す。

<スパン 結論

次に、2つのnparrayを比較して、それらが正確に等しいかどうかを確認します。

all()を使用します。

<スパン を参照してください。

https://stackoverflow.com/questions/28899920/numpy-the-truth-value-of-an-array-with-more-than-one-element-is-ambiguous

                                                                                                                                       回答者  SmCaterpillar