Как получить диапазон допустимых типов данных Numpy?
Вопрос
Меня интересует поиск определенного типа Numpy (например. np.int64
, np.uint32
, np.float32
, и т. д.), каков диапазон всех возможных допустимых значений (например, np.int32
может хранить числа до 2**31-1
).Конечно, я думаю, что теоретически это можно выяснить для каждого типа, но есть ли способ сделать это во время выполнения, чтобы обеспечить более переносимый код?
Решение
Цитата из списка обсуждений:
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
Связь здесь.
Другие советы
Вы можете использовать numpy.iinfo(arg).max
чтобы найти максимальное значение для целочисленных типов arg
, и numpy.finfo(arg).max
чтобы найти максимальное значение для типов с плавающей запятой 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
только предложения min
и max
, но finfo
также предлагает полезные значения, такие как eps
(наименьшее число > 0, которое можно представить) и resolution
(приблизительное разрешение десятичных чисел типа arg
).