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