logaritmo libreria descargar built python math

libreria - python 3.6 math module



¿Cómo puedo verificar los valores de NaN? (13)

float(''nan'') en Nan (no un número). ¿Pero cómo lo compruebo? Debería ser muy fácil, pero no puedo encontrarlo.


Para nan de tipo float

>>> import pandas as pd >>> value = float(nan) >>> type(value) >>> <class ''float''> >>> pd.isnull(value) True >>> >>> value = ''nan'' >>> type(value) >>> <class ''str''> >>> pd.isnull(value) False


Aquí hay una respuesta trabajando con:

  • Python no único NaN: float(''nan'')
  • Número único NaN (singleton): np.nan
  • cualquier otro objeto: cadena o lo que sea (no genera excepciones si se encuentran)

Aquí está:

import numpy as np def is_nan(x): return (x is np.nan or x != x)

Y algunos ejemplos:

values = [float(''nan''), np.nan, 55, "string", lambda x : x] for value in values: print "{:<8} : {}".format(repr(value), is_nan(value))

Salida:

nan : True nan : True 55 : False ''string'' : False <function <lambda> at 0x000000000927BF28> : False


Bueno, ingresé a esta publicación porque tuve algunos problemas con la función:

math.isnan()

Hay un problema cuando ejecutas este código:

a = "hello" math.isnan(a)

Se plantea la excepción. Mi solución para eso es hacer otro cheque:

def is_nan(x): return isinstance(x, float) and math.isnan(x)


Con python <2.6 terminé con

def isNaN(x): return str(float(x)).lower() == ''nan''

Esto me funciona con python 2.5.1 en una caja de Solaris 5.9 y con python 2.6.5 en Ubuntu 10


De hecho, acabo de encontrarme con esto, pero para mí estaba buscando nan, -inf o inf. Acabo de usar

if float(''-inf'') < float(num) < float(''inf''):

Esto es cierto para los números, falso para nan y ambos inf, y generará una excepción para cosas como cadenas u otros tipos (lo que probablemente sea bueno). Además, esto no requiere importar bibliotecas como math o numpy (numpy es tan malditamente grande que duplica el tamaño de cualquier aplicación compilada).


Estoy recibiendo los datos de un servicio web que envía NaN como una cadena ''Nan'' . Pero también podría haber otros tipos de cadenas en mis datos, por lo que un simple float(value) podría generar una excepción. Usé la siguiente variante de la respuesta aceptada:

def isnan(value): try: import math return math.isnan(float(value)) except: return False

Requisito:

isnan(''hello'') == False isnan(''NaN'') == True isnan(100) == False isnan(float(''nan'')) = True


La forma habitual de probar un NaN es ver si es igual a sí mismo:

def isNaN(num): return num != num


Otro método si está atascado en <2.6, no tiene números y no tiene soporte IEEE 754:

def isNaN(x): return str(x) == str(1e400*0)


Todos los métodos para saber si la variable es NaN o Ninguno:

Ninguno tipo

In [1]: from numpy import math In [2]: a = None In [3]: not a Out[3]: True In [4]: len(a or ()) == 0 Out[4]: True In [5]: a == None Out[5]: True In [6]: a is None Out[6]: True In [7]: a != a Out[7]: False In [9]: math.isnan(a) Traceback (most recent call last): File "<ipython-input-9-6d4d8c26d370>", line 1, in <module> math.isnan(a) TypeError: a float is required In [10]: len(a) == 0 Traceback (most recent call last): File "<ipython-input-10-65b72372873e>", line 1, in <module> len(a) == 0 TypeError: object of type ''NoneType'' has no len()

Tipo NaN

In [11]: b = float(''nan'') In [12]: b Out[12]: nan In [13]: not b Out[13]: False In [14]: b != b Out[14]: True In [15]: math.isnan(b) Out[15]: True


para cuerdas en panda tomar pd.isnull:

if not pd.isnull(atext): for word in nltk.word_tokenize(atext):

La función como función de extracción para NLTK.

def act_features(atext): features = {} if not pd.isnull(atext): for word in nltk.word_tokenize(atext): if word not in default_stopwords: features[''cont({})''.format(word.lower())]=True return features


math.isnan()

Comprueba si el float x es un NaN (no un número). Los NaN son parte de los estándares IEEE 754. La operación como, pero sin limitarse a, inf * 0, inf / inf o cualquier operación que involucre un NaN, por ejemplo, nan * 1, devuelve un NaN.

Nuevo en la versión 2.6.

>>> import math >>> x=float(''nan'') >>> math.isnan(x) True >>>


math.isnan()

o comparar el número a sí mismo. NaN siempre es! = NaN, de lo contrario (por ejemplo, si es un número), la comparación debería tener éxito.


numpy.isnan(number) te dice si es NaN o no en Python 2.5.