numpy的assert_array_equal是否验证了复杂的nan是完全相等的?

numpy的assert_array_equal是否验证了复杂的nan是完全相等的?,numpy,Numpy,我想知道两个复数为NaN的numpy数组是否完全相等 具体来说,我想验证对于NaN,不仅在两个数组中都有NaN,而且NaN的实部和虚部在值上匹配 有人知道assert_array_equal是这样做的还是我必须自己检查吗?Numpy只是检查是否存在NaN值,并为此使用np.isnan。在这里,实部或虚部是否包含NaN值并不重要: >>> np.isnan(np.sqrt(-1.) + 1j) True >>> np.isnan(np.sqrt(-1.) * 1

我想知道两个复数为NaN的numpy数组是否完全相等

具体来说,我想验证对于NaN,不仅在两个数组中都有NaN,而且NaN的实部和虚部在值上匹配


有人知道assert_array_equal是这样做的还是我必须自己检查吗?

Numpy只是检查是否存在NaN值,并为此使用np.isnan。在这里,实部或虚部是否包含NaN值并不重要:

>>> np.isnan(np.sqrt(-1.) + 1j)
True
>>> np.isnan(np.sqrt(-1.) * 1j)
True
类似地,对于两个阵列a和b:

要比较复数,只需检查实部和虚部的相等性。例如:

a = np.array([1+2j, 3+4j, np.nan+6j])
b = np.array([1+2j, 3+4j, np.nan+5j])

eq(a.real, b.real) & eq(a.imag, b.imag)
False

编辑:或者您可以使用np.allclosea.real、b.real、equal_-nan=True&np.allclosea.imag、b.imag、equal_-nan=True。

如果您提供一个示例会有所帮助。这似乎很容易在提示下进行测试。对我来说,np.testing.assert\u array\u equalnp.array[complex2.3,np.nan],np.array[complexnp.nan,2.3]不会提升。@MarkDickinson当然!我自己应该想到的。。。非常感谢。
def eq(a, b):
    return np.all((a == b) | (np.isnan(a) & np.isnan(b)))
a = np.array([1+2j, 3+4j, np.nan+6j])
b = np.array([1+2j, 3+4j, np.nan+5j])

eq(a.real, b.real) & eq(a.imag, b.imag)
False