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

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

7 horas ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

5 días ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

Cómo Comparar Dos Hipotecas con Todos los Gastos Incluidos

Comparar dos hipotecas parece sencillo: la que tenga el TIN más bajo es la mejor…

3 semanas ago

This website uses cookies.