functions array python numpy

array - numpy python 3



¿Cómo comprobar el tamaño de un flotador en python? (4)

El rango de valores de punto flotante está disponible en el objeto sys.float_info .

Como dice Sven, para CPython float es siempre de 64 bits. Pero la referencia del lenguaje de Python dice

Usted está a merced de la arquitectura de la máquina subyacente (y la implementación de C o Java) para el rango aceptado ... ".

Por lo tanto, este no es necesariamente el caso de otras implementaciones de Python.

Quiero verificar si un flotador es en realidad de 32 o 64 bits (y el número de bits de una matriz flotante numpy). Debería haber una incorporada, pero simplemente no se enteró ...


numpy.finfo enumera tamaños y otros atributos de float32 ..., incluidos
nexp: número de bits en el exponente incluyendo su signo y sesgo.
nmant: número de bits en la mantisa.
En una máquina con punto flotante estándar IEEE-754 ,

import numpy as np for f in (np.float32, np.float64, float): finfo = np.finfo(f) print finfo.dtype, finfo.nexp, finfo.nmant

se imprimirá por ejemplo

float32 8 23 float64 11 52 float64 11 52

(Prueba float16 y float128 también.)


El tamaño de un float Python se puede solicitar a través de sys.float_info . Sin embargo, nunca encontré nada más que de 64 bits, en muchas arquitecturas diferentes.

Los elementos de una matriz NumPy pueden tener un tamaño diferente, pero puede verificar su tamaño en bytes por a.itemsize , donde a es una matriz NumPy.


print numpy.finfo(numpy.float) Machine parameters for float64 --------------------------------------------------------------------- precision= 15 resolution= 1.0000000000000001e-15 machep= -52 eps= 2.2204460492503131e-16 negep = -53 epsneg= 1.1102230246251565e-16 minexp= -1022 tiny= 2.2250738585072014e-308 maxexp= 1024 max= 1.7976931348623157e+308 nexp = 11 min= -max ---------------------------------------------------------------------