Cómo saber si el valor de una variable es numérico en Python

A la hora de trabajar con datos numéricos en Python nos encontramos con un clásico ¿Cómo se que el valor que estoy recibiendo es un número? Casi todos los lenguages de programación tienen una función que nos permite evaluar si el valor almacenado en una variable es numérico, para el caso de Python vamos a ver dos opciones.

Python por defecto incluye una librería llamada math en todas sus versiones, pensada para realizar operaciones sobre datos escalares y para operaciones de trigonometría. Por otra parte existe una librería externa muy popular llamada numpy, pensada para el trabajo algebraico con matrices. Según el tipo de operaciones que vayas a realizar en tu código deberás importar una u otra.

En cualquier caso, ambas liberías tienen una función para chequear si una variable es numérica: la función isnan(), que devolverá true si el valor que está evaluando es nan (Not a Number). En el caso de usar la importada desde la librería math recibirá una sola variable y devolverá un valor booleano, en caso de usar la de numpy podrá recibir un array y evaluará todos los valores almacenados dentro del mismo, devolviendo según corresponda un valor booleano o un array de valores booleanos. Basta con importarla al principio de vuestro código y comprobarlo:

Con math en este caso devolvería true:

import math
x=float('cadena')
math.isnan(x)

Con numpy podemos trabajar con arrays:

import numpy as np
np.isnan([np.log(-1.),1.,np.log(0)])

Esto devolvería un array con un true para el primer valor evaluado y un false para los dos siguientes.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s