2 つの NumPy 配列が等しいかどうかを比較する最も簡単な方法は何ですか (等価性は次のように定義されます: すべてのインデックス i: に対して A = B の場合に限りますA[i] == B[i]
)?
単に使用すると==
ブール配列が得られます:
>>> numpy.array([1,1,1]) == numpy.array([1,1,1])
array([ True, True, True], dtype=bool)
and
配列が等しいかどうかを判断するには、この配列の要素を比較する必要がありますか、それとももっと簡単な方法がありますか?
ベストアンサー1
(A==B).all()
配列 (A==B) のすべての値が True かどうかをテストします。
注: 次のようなAとBの形状もテストしたい場合があります。A.shape == B.shape
特殊なケースと代替案(dbaupp の回答と yoavram のコメントより)
注意すべきこと:
- このソリューションは、特定のケースで奇妙な動作をすることがあります。 または のいずれか
A
がB
空で、もう一方に要素が 1 つだけ含まれている場合、 を返しますTrue
。何らかの理由で、比較によってA==B
空の配列が返され、その場合、all
演算子は を返しますTrue
。 - もう 1 つのリスクは、
A
と がB
同じ形状ではなく、ブロードキャスト可能でない場合、このアプローチではエラーが発生することです。
A
結論として、形状について疑問がある場合、B
または単に安全を確保したい場合は、次のいずれかの専用関数を使用してください。
np.array_equal(A,B) # test if same shape, same elements values
np.array_equiv(A,B) # test if broadcastable shape, same elements values
np.allclose(A,B,...) # test if same shape, elements have close enough values