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?

Foi ú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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top