13

2 つの numpy float 配列を比較する単体テストを実装する最良の方法は何ですか。

unittest.assertEqual() を試しましたが、float が 100% 等しいことはないため、float 配列では機能しませんでした。ラウンド(フロート)の等価性をテストするため、assertAlmostEqualを使用できません...

誰かがこのようなものを実装していますか

self.assertFloatArrayEqual(array1, array2, msg = "array are not equal")

ありがとう

4

3 に答える 3

30

とにかくnumpyを使用している場合は、numpyテスト関数を使用してみませんか?

numpy.testing.assert_array_almost_equal

numpy.testing.assert_array_almost_equal_nulp

これらは、NaNのファイン、チェック形状なども処理します。

于 2013-02-17T13:01:42.243 に答える
8

試す

self.assertTrue(numpy.allclose(array1, array2, rtol=1e-05, atol=1e-08))

allclosenumpy モジュールの関数は、2 つの配列が同じかどうかをチェックします機械精度特定の相対的および絶対的な公差。rtolatolは、上記のデフォルト値を持つオプションのパラメーターです。

私を修正してくれた@DSMに感謝します。

于 2013-02-17T12:22:13.103 に答える
1

2 つの配列を比較できるバージョンがあります。もちろん、これには numpy 配列が適切に動作する必要があります。つまり、len() があり、角かっこで要素にアクセスできる必要があります。さて、丸め誤差に関しては、使用できるデルタまたは範囲を定義する可能性がありますが、これにより配列での使用が許可されるとは思いません。

申し訳ありませんが、自分でロールバックする必要があります。

于 2013-02-17T12:04:11.463 に答える