2009-11-01 4 views
24

Je suis intéressé par la recherche d'un type Numpy particulier (par ex. Np.int64, np.uint32, np.float32, etc.) pour connaître la plage de toutes les valeurs valides possibles (par exemple np.int32 peut stocker des nombres allant jusqu'à 2 ** 31-1). Bien sûr, je suppose que l'on peut théoriquement comprendre cela pour chaque type, mais y a-t-il un moyen de le faire au moment de l'exécution pour assurer un code plus portable?Plage de valeurs numériques valides

Répondre

35

Je cite une liste de 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 

Le lien est ici: link to numpy discussion group page

19

Vous pouvez utiliser numpy.iinfo(arg).max pour trouver la valeur maximale pour les types entiers de arg et numpy.finfo(arg).max pour trouver la valeur max pour les types de flotteurs 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 ne propose que min et max, mais finfo offre également des valeurs utiles telles que eps (le plus petit nombre> 0 représentable) et resolution (la résolution de nombre décimal approximatif du type de arg).

Questions connexes