2009-11-01 9 views
24

Me interesa encontrar un tipo particular de Numpy (por ejemplo, np.int64, np.uint32, np.float32, etc.) cuál es el rango de todos los posibles valores válidos (por ejemplo, np.int32 puede almacenar números hasta 2 ** 31-1). Por supuesto, supongo que uno puede resolver esto teóricamente para cada tipo, pero ¿hay alguna forma de hacerlo en tiempo de ejecución para garantizar un código más portátil?Rango de valores numpy válidos

Respuesta

35

Citando una lista dicussion numpy:

That kind of information is available via numpy.finfo() and numpy.iinfo(): 

In [12]: finfo('d').max 
Out[12]: 1.7976931348623157e+308 

In [13]: iinfo('i').max 
Out[13]: 2147483647 

In [14]: iinfo(uint8).max 
Out[14]: 255 

El enlace está aquí: link to numpy discussion group page

19

Puede utilizar numpy.iinfo(arg).max para encontrar el valor máximo para los tipos enteros de arg y numpy.finfo(arg).max para encontrar el valor máximo para tipos de flotador de arg.

>>> numpy.iinfo(numpy.uint64).min 
0 
>>> numpy.iinfo(numpy.uint64).max 
18446744073709551615L 
>>> numpy.finfo(numpy.float64).max 
1.7976931348623157e+308 
>>> numpy.finfo(numpy.float64).min 
-1.7976931348623157e+308 

iinfo sólo ofrece min y max, pero finfo también ofrece valores útiles, tales como eps (el más pequeño número> 0 representable) y resolution (la aproximado resolución número decimal del tipo de arg).

Cuestiones relacionadas