2015-12-02 61 views
0

我正在處理像(110,80,817)這樣的大型3D數組,並且希望在某些單元測試中比較兩個數組。但是,numpy.assert_almost_equal的默認輸出不能幫助我很容易地找出錯誤。例如:查找失敗的索引numpy.assert_almost_equal

>     raise AssertionError(msg) 
E     AssertionError: 
E     Arrays are not almost equal to 7 decimals 
E 
E     (mismatch 0.0314621119395%) 
E     x: array([[[ 0., 0., 0., ..., 0., 0., 0.], 
E       [ 0., 0., 0., ..., 0., 0., 0.], 
E       [ 0., 0., 0., ..., 0., 0., 0.],... 
E     y: array([[[ 0., 0., 0., ..., 0., 0., 0.], 
E       [ 0., 0., 0., ..., 0., 0., 0.], 
E       [ 0., 0., 0., ..., 0., 0., 0.],... 

有沒有方法可以輕鬆查看哪些3D索引失敗此斷言?

回答

1

您可以使用np.isclosenp.where結合本

idx = zip(*np.where(~np.isclose(a, b, atol=0, rtol=1e-7))) 

現在idx將所有的指標(x,y,z)這裏斷言失敗的列表。

+0

太棒了!謝謝您的幫助。 –