web-dev-qa-db-fra.com

Comment obtenir la gamme de types de données Numpy valides?

Je souhaite trouver un type de Numpy particulier (par exemple np.int64, np.uint32, np.float32, etc.) quelle est la plage de toutes les valeurs valides possibles (par exemple np.int32 peut stocker des nombres jusqu'à 2**31-1). Bien sûr, je suppose que l'on peut théoriquement comprendre cela pour chaque type, mais existe-t-il un moyen de le faire au moment de l'exécution pour garantir un code plus portable?

44
astrofrog

Citant à partir d'une liste de discussion 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

Lien ici .

54
perimosocordiae

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 maximale pour les types flottants 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 propose également des valeurs utiles telles que eps (le plus petit nombre> 0 représentable) et resolution (la résolution approximative en nombre décimal du type de arg).

37
Mark Rushakoff