Python

NumPy: Contar valores diferentes de cero con la función np.count_nonzero()

Al trabajar con vectores muchas veces queremos contar cuántos valores cumplen una condición, para lo que en NumPy se puede recurrir a la función np.count_nonzero(). Una función que cuenta cuántos de los valores son diferentes de cero, o falso en el caso de matrices con valores booleanos, de una manera fácil.

La función np.count_nonzero()

En NumPy es posible encontrar la función np.count_nonzero() con la que se pueden contar los valores distintos de cero de una matriz. Esta función tiene la siguiente forma:

np.count_nonzero(arr, axis=None)

donde:

  • arr: representa la matriz en la que se desea buscar los valores que no son cero.
  • axis: indica el eje a lo largo del cual se desea contar los valores diferentes de cero. Los posibles valores para esta propiedad son los habituales:
    • None: contará el número total de valores en la matriz.
    • 0: realizar el recuento por columnas.
    • 1: realizar el recuento por filas.

Uso basico de np.count_nonzero()

El uso básico de np.count_nonzero() permite contar los valores que son diferentes de cero en un vector numérico. Para ver cómo usar esta función simplemente se puede crear un vector con ceros y ver el resultado.

import numpy as np

arr = np.array([5, 8, 9, 7, 0, 0, 9, 9, 0, 6])

np.count_nonzero(arr)
7

Obteniendo como resultados siete, el valor esperado. Además de con valores de tipo numérico, la función también admite vectores con valores booleanos, situación en la que contará los valores que son verdaderos. Dado que los valores falsos se consideran cero. Lo que se puede comprobar en el siguiente ejemplo.

boolean = np.array([False, False, True, False, False, False, True, True, False, False])

np.count_nonzero(boolean)
3

Lo que se puede utilizar para evaluar los valores de un vector que cumple una condición, al contar los valores verdaderos. Por ejemplo, se puede contar el número de valores positivos en el vector anterior simplemente usando la siguiente expresión.

np.count_nonzero(arr > 5)
6

Obteniendo seis como resultado.

Contar los valores diferente de cero en matrices

La función también se puede utilizar para contar el número de valores diferentes de cero en matrices. Por defecto contará el número total de valores, devolviendo un escalar con el resultado.

mat = np.array([[5, 8, 9], [7, 0, 0], [9, 9, 0]])

np.count_nonzero(mat)
6

Aunque, como es habitual en estas funciones, es posible cambiar el comportamiento a través de la propiedad axis. Asignando el valor cero para contar por columnas.

np.count_nonzero(mat, axis=0)
array([3, 2, 1])

Devolviendo en este caso un vector con los resultados para cada columna, Por otro lado, en el caso de asignar el valor uno contará las ocurrencias por filas.

np.count_nonzero(mat, axis=1)
array([3, 1, 2])

Conclusiones

En esta entrada hemos visto cómo se puede recurrir a la función np.count_nonzero() para contar los valores que son diferentes de cero. Una función con la que se puede saber cuántos valores cumple una condición ya que también trabaja con valores booleanos.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: NumPy

Recent Posts

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

3 días ago

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

4 días ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

1 semana ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

2 semanas ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

This website uses cookies.