1. ホーム
  2. python

[解決済み] NaNを含むnumpy配列の比較

2023-05-31 13:14:12

質問

私のunittestのために、私は2つの配列が同一であるかどうかをチェックしたい。 例を減らす。

a = np.array([1, 2, np.NaN])
b = np.array([1, 2, np.NaN])

if np.all(a==b):
    print 'arrays are equal'

これは nan != nan . どのようにすればよいでしょうか?

どのように解決するのですか?

別の方法として、あなたが使用することができます numpy.testing.assert_equal または numpy.testing.assert_array_equal を使い try/except :

In : import numpy as np

In : def nan_equal(a,b):
...:     try:
...:         np.testing.assert_equal(a,b)
...:     except AssertionError:
...:         return False
...:     return True

In : a=np.array([1, 2, np.NaN])

In : b=np.array([1, 2, np.NaN])

In : nan_equal(a,b)
Out: True

In : a=np.array([1, 2, np.NaN])

In : b=np.array([3, 2, np.NaN])

In : nan_equal(a,b)
Out: False

編集

unittestingに使うので、素直に assert (というようにラップするのではなく True/False のように折り返すのではなく)より自然かもしれません。