Подтвердить что ты не робот

Тест, если массив numpy содержит только нули

Мы инициализируем массив numpy с нулями, как показано ниже:

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

Но как мы проверяем, равны нулю все элементы в заданной матрице массива n * n numpy.
Метод просто должен вернуть True, если все значения действительно равны нулю.

4b9b3361

Ответ 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

Ответ 2

Другие ответы, опубликованные здесь, будут работать, но самая ясная и эффективная функция для использования - numpy.any():

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

или

>>> all_zeros = not a.any()
  • Это предпочтительнее, чем numpy.all(a==0), потому что он использует меньше ОЗУ. (Это не требует временного массива, созданного термином a==0.)
  • Кроме того, он быстрее, чем numpy.count_nonzero(a), потому что он может сразу вернуться, когда найден первый ненулевой элемент.

Ответ 3

Я бы использовал np.all здесь, если у вас есть массив a:

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

Ответ 4

Если вы тестируете все нули, чтобы избежать предупреждения о другой функции numpy, тогда обертывание строки в попытке, кроме блока, будет сохраняться необходимость выполнить проверку нулей перед интересующей вас операцией, т.е.

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