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


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

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

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

4 54

4 ответа:

проверить 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.все здесь, Если у вас есть массив a:

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

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

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