我们初始化与零的numpy的阵列波纹管:测试是否numpy的数组只包含零
np.zeros((N,N+1))
但是我们如何检查在一个给定的N * N numpy的数组矩阵的所有元素是否为零。
该方法只需要返回一个True,如果所有的值都为零。
我们初始化与零的numpy的阵列波纹管:测试是否numpy的数组只包含零
np.zeros((N,N+1))
但是我们如何检查在一个给定的N * N numpy的数组矩阵的所有元素是否为零。
该方法只需要返回一个True,如果所有的值都为零。
>>> np.count_nonzero(np.eye(4))
4
>>> np.count_nonzero([[0,1,7,0,0],[3,0,0,2,19]])
5
我会用np.all这里,如果你有一个数组:
>>> np.all(a==0)
我喜欢非零个值这个答案检查,以及。例如,可以通过执行'np.all(a == a [0])'来检查数组中的所有元素是否相同。非常感谢! –
张贴在这里会工作的其他答案,但使用最清晰,最有效的功能是numpy.any()
:
>>> all_zeros = not np.any(a)
或
>>> all_zeros = not a.any()
numpy.all(a==0)
更受欢迎,因为它使用更少的RAM。 (它不需要由a==0
术语创建的临时阵列。)numpy.count_nonzero(a)
更快,因为它可以在找到第一个非零元素时立即返回。我不确定我是否同意这是最明智的解决方案。 – Akavall
如果你对所有零测试,以避免对其他numpy的功能,然后包装在一个try行警告,除非块将保存有你感兴趣的,即在手术前做测试的零
try: # removes output noise for empty slice
mean = np.mean(array)
except:
mean = 0
你会想'不np.count_nonzero(np.eye(4))'返回TRUE;只有当所有的值都为0。 –