Ответ 1
Отъезд 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 с нулями, как показано ниже:
np.zeros((N,N+1))
Но как мы проверяем, равны нулю все элементы в заданной матрице массива n * n numpy.
Метод просто должен вернуть 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)
, потому что он использует меньше ОЗУ. (Это не требует временного массива, созданного термином a==0
.)numpy.count_nonzero(a)
, потому что он может сразу вернуться, когда найден первый ненулевой элемент.Я бы использовал np.all здесь, если у вас есть массив a:
>>> np.all(a==0)
Если вы тестируете все нули, чтобы избежать предупреждения о другой функции numpy, тогда обертывание строки в попытке, кроме блока, будет сохраняться необходимость выполнить проверку нулей перед интересующей вас операцией, т.е.
try: # removes output noise for empty slice
mean = np.mean(array)
except:
mean = 0