Como chegar a gama de tipos de dados Numpy válidos?
Pergunta
Estou interessado em encontrar para um tipo Numpy particular (por exemplo np.int64
, np.uint32
, np.float32
, etc.) o que o intervalo de todos os valores válidos possíveis é (por exemplo np.int32
pode armazenar números até 2**31-1
). Claro, eu acho que pode-se teoricamente descobrir isso para cada tipo, mas há uma maneira de fazer isso em tempo de execução para garantir código mais portátil?
Solução
Citando uma lista de discussão numpy:
That 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
aqui .
Outras dicas
Você pode usar numpy.iinfo(arg).max
para encontrar o máximo valor para tipos inteiros de arg
e numpy.finfo(arg).max
para encontrar o valor máximo para tipos float 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
apenas ofertas min
e max
, mas finfo
também oferece valores úteis, tais como eps
(o menor número> 0 representável) e resolution
(a resolução número decimal aproximada do tipo de arg
).