Целые числа Python могут иметь произвольную длину: type(10**1000)
по-прежнему int
, и при выводе вывести на экран один, а затем тысячу нулей.
Numpy int64
(это то, что int_
на моей машине) - это целые числа, представленные 8 байтами (64 бита), и все, что не может быть представлено. Например, np.int_(10)**1000
даст вам неправильный ответ - но быстро;).
Таким образом, это разные виды чисел; Подклассификация одного под другим имеет такой же смысл, как и подклассы int
в float
, как я полагаю, думали numpy
люди. Лучше держать их отдельно, чтобы никого не смущало то, что было бы неразумно путать их.
Разделение выполнено, потому что целые числа произвольного размера являются медленными, в то время как numpy
пытается ускорить вычисления, придерживаясь машинно-дружественных типов.
С другой стороны, с плавающей точкой - это стандартная IEEE с плавающей точкой, как в Python, так и в numpy
, поддерживаемая нашими процессорами "из коробки".