2016-07-21 10 views
11

numpy.testing.assert_array_equalは、2つの配列が等しいことをアサートします。numpyテストアサート配列が等しくない

しかし、numpy.testing.assert_array_not_equalを実行する最良の方法は、つまり、2つの配列が等しくないことを確認することですか?

+0

どのように配列が違うのですか?彼らはすべての要素で、または少なくとも1つの点で異なる必要がありますか? –

+0

少なくとも1つの要素が不等である必要があります。つまり、2つの配列の内容が同じでない可能性があります。 1つの要素が異なる場合、すべてがOKです。 –

+1

それから、@ Eswcvladの答えはおそらく最もエレガントなハックです。 –

答えて

10

、その後は逆の結果のためにnumpy.testing.assert_raisesと一緒numpy.testing.assert_array_equalを使用することができます。たとえば:

assert_raises(AssertionError, assert_array_equal, array_1, array_2) 

numpy.testing.utils.assert_array_compareは(それがnumpy.testing.assert_array_equalで使用されている)があるが、私はそれがどこかに文書を参照してくださいので、注意して使用しないでください。この1は、すべての要素が異なっていることを確認しますので、私は、これはあなたのユースケースではないと思います。これは投稿されていない理由は、私が正しく質問を理解していなかったことが、何も

import operator 

assert_array_compare(operator.__ne__, array_1, array_2) 
+1

最初の方法のためのきちんとしたハック。私が知る限り、すべての要素が異なるだけであれば、2番目の要素は成功します。 OPが望んでいるかどうかは分かりません。いずれにせよ+1。 –

+0

はい、あなたは2番目のものについて正しいです。答えを編集します。 – Eswcvlad

+0

最初のものは私のためです!ありがとう! –

4

私はnumpyのテストフレームワークに直接組み込まものがあるとは思いませんが、あなただけ使用できます。

np.any(np.not_equal(a1,a2)) 

やユニットテストフレームワークに組み込まれたりassert_equalTrueに例えばとしてnumpyのを確認すると、真の主張あなたは、具体的numpyのテストを使用したい場合は

np.testing.assert_equal(np.any(np.not_equal(a,a)), True) 
+0

テストの感覚が反転しています。 OPは、不等配列が通過することを望んでいます。 –

+0

うわー - ちょうど反対方向にテストを反転した。見つけてくれてありがとう。 @MadPhysicist – Mark

+0

代わりに 'TestCase'の外にいる場合は' TestCase.assertTrue(np.any(...)) '(あるいは' nose.tools.assert_true(np.any(...)) 'を使うべきでしょう)。 –

1

わかりません約:

assert not np.array_equal(array1 , array2) 

numpyのテストモジュールでのみ使用する理由は何ですか?

関連する問題