2009-11-01 5 views
24

Jestem zainteresowany znalezieniem dla określonego typu Numpy (np. Np.int64, np.uint32, np.float32, itp.) Jaki jest zakres wszystkich możliwych poprawnych wartości (np. Np.int32 może przechowywać numery do 2 ** 31-1). Oczywiście, myślę, że teoretycznie można to obliczyć dla każdego typu, ale czy istnieje sposób, aby to zrobić w czasie wykonywania, aby zapewnić bardziej przenośny kod?Zakres ważnych wartości numpy

Odpowiedz

35

Cytując z numpy listy dicussion:

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 

link jest tutaj: link to numpy discussion group page

19

Można użyć numpy.iinfo(arg).max znaleźć maksymalną wartość dla typów całkowitych od arg i numpy.finfo(arg).max znaleźć wartość maksymalną dla typów float 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 oferuje tylko min i max, ale oferuje również użyteczne finfo wartości, takie jak eps (najmniejsza liczba> 0 przedstawialnym) i resolution (przybliżona dziesiętną rozdzielczość numer typu arg).