Dla mojego unittest, chcę sprawdzić, czy dwie tablice są identyczne. Zredukowany przykład:porównanie numpy tablice zawierające NaN
a=np.array([1, 2, np.NaN])
b=np.array([1, 2, np.NaN])
if np.all(a==b):
print 'arrays are equal'
To nie działa, ponieważ nan! = Nan. Jaki jest najlepszy sposób postępowania?
Z góry dziękuję.
Doskonały, to najbardziej eleganckie i wbudowane rozwiązanie. Właśnie dodałem 'np.testing.assert_equal (a, b)' w moim unittest, a jeśli podniesie wyjątek, test się nie powiedzie (brak błędu), a nawet dostaję ładny wydruk z różnicami i niedopasowaniem. Dzięki. – saroele
Należy zauważyć, że to rozwiązanie działa, ponieważ 'numpy.testing.assert_ *' nie stosuje tej samej semantyki python 'assert's. W zwykłym Pythonie powstają wyjątki 'AssertionError' iff' __debug__ ma wartość True' tzn. Jeśli skrypt jest uruchamiany niezoptymalizowany (brak flagi -O), zobacz [docs] (http://docs.python.org/3.3/reference /simple_stmts.html#grammar-token-assert_stmt). Z tego powodu zdecydowanie odradzałbym pakowanie "AssertionErrors" do kontroli przepływu. Oczywiście, ponieważ jesteśmy w pakiecie testowym, najlepszym rozwiązaniem jest pozostawienie samego numpy.testing.assert. –