testingnumpy数组是否只包含零

我们用零来初始化一个numpy数组,如下所示:

np.zeros((N,N+1)) 

但是,我们如何检查给定的n * n numpy数组matrix中的所有元素是否为零。
如果所有的值都是零,那么只需要返回一个True。

看看numpy.count_nonzero 。

 >>> np.count_nonzero(np.eye(4)) 4 >>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]]) 5 

在这里发布的其他答案将工作,但使用最清晰和最有效的函数是numpy.any()

 >>> all_zeros = not np.any(a) 

要么

 >>> all_zeros = not a.any() 
  • 这比numpy.all(a==0)更好,因为它使用更less的RAM。 (它不需要由a==0项创build的临时数组。
  • 此外,它比numpy.count_nonzero(a)更快,因为它可以在find第一个非零元素时立即返回。

我会在这里使用np.all,如果你有一个数组a:

 >>> np.all(a==0) 

如果你正在testing所有的零,以避免在另一个numpy函数的警告,然后包装行尝试,除了块将不需要在你感兴趣的操作之前做零的testing,即

 try: # removes output noise for empty slice mean = np.mean(array) except: mean = 0