Python 如何检查numpy数组是否相等

Python 如何检查numpy数组是否相等,python,numpy,assert,array-broadcasting,Python,Numpy,Assert,Array Broadcasting,我在numpy做一些练习,特别是在广播方面,但我被卡住了。 有人能解释一下assert应该如何使用吗 def fill_0(n): return np.zeros(n) -1 def fill_1(n): return np.zeros(n) *(-1) def fill_2(n): return - np.ones(n) def fill_3(n): return - np.ones(n) -2 assert fill_0(4) == fill_1(4)

我在numpy做一些练习,特别是在广播方面,但我被卡住了。
有人能解释一下assert应该如何使用吗

def fill_0(n):
    return np.zeros(n) -1

def fill_1(n):
    return np.zeros(n) *(-1)

def fill_2(n):
    return - np.ones(n)

def fill_3(n):
    return - np.ones(n) -2

assert fill_0(4) == fill_1(4) == fill_2(4) == fill_3(4)
我会这样做:

np.testing.assert_array_equal(fill_0(4), fill_1(4))
np.testing.assert_array_equal(fill_0(4), fill_2(4))
np.testing.assert_array_equal(fill_0(4), fill_3(4))
这使得失败的位置更加明确(因为每一对都是一条单独的线),即使数据中有NaN,它也能工作,而常规的相等性比较会失败(因为NaN==NaN为False)。

我会这样做:

np.testing.assert_array_equal(fill_0(4), fill_1(4))
np.testing.assert_array_equal(fill_0(4), fill_2(4))
np.testing.assert_array_equal(fill_0(4), fill_3(4))

这使得失败的位置更加明确(因为每一对都是一条独立的线),即使数据中有NaN,它也会工作,而常规的相等比较会失败(因为NaN==NaN是错误的)。

我刚刚意识到,即使广播也是错误的,哈哈,这就是为什么我需要检查它,为什么使用np.all()是错误的?我想你指的是
np。我发布并删除了所有的
答案,这完全是错误的,对不起:/但应该有办法使用
np。所有的
我想我现在太累了,不能发布了:);在任何情况下,@JohnZwinck的答案都是很好的,因为assert
np.all(fill\u 0(4)=fill\u 1(4)=fill\u 2(4)=fill\u 3(4))
起作用了?我刚刚意识到,即使是广播也是错误的哈哈,这就是为什么我需要检查它,为什么使用np.all()是错误的?我想你指的是
np.all
我发布和删除的答案,这是完全错误的,对不起:/但是应该有办法用
np来实现。所有的
我想我现在已经太累了,不能发布了:);在任何情况下,@JohnZwinck的答案都是nicerMaybe assert
np.all(fill\u 0(4)=fill\u 1(4)=fill\u 2(4)=fill\u 3(4))
有效?这与编写
assert np.array\u equal()
相同,对吗?@Zhang\u anlan:No.根据文档:“与numpy中的标准用法相反,NaN是像数字一样比较的,如果两个对象的NaN都在相同的位置,则不会提出断言。”这与编写
assert np.array_equal()
,对不对?@Zhang_anlan:不对。根据文档:“与numpy中的标准用法相反,NaN是像数字一样比较的,如果两个对象在相同位置都有NAN,则不会引发断言。”