考虑以下:
>>> import numbers
>>> import numpy
>>> a = numpy.int_(0)
>>> isinstance(a, int)
False
>>> isinstance(a, numbers.Integral)
True
>>> b = numpy.float_(0)
>>> isinstance(b, float)
True
>>> isinstance(b, numbers.Real)
True
NumPy's numpy.int_
and numpy.float_
类型都是Python的数字抽象基类层次结构,但令我感到奇怪的是np.int_
object is not内置的一个实例int
类,同时np.float_
object is内置的一个实例float
type.
为什么会这样呢?
Python 整数可以是任意长度:type(10**1000)
还是int
,如果你输出它,将会在屏幕上打印出一个一,然后打印出一千个零。
Numpy int64
(这是什么int_
在我的机器上)是由 8 个字节(64 位)表示的整数,超过该值的任何内容都无法表示。例如,np.int_(10)**1000
会给你一个错误的答案 - 但很快;)。
因此,它们是不同种类的数字;将一个子类化为另一个子类化与子类化一样有意义int
under float
会,是我的假设numpy
人们认为。最好将它们分开,这样就不会有人混淆这一事实,因为混淆它们是不明智的。
分割完成是因为任意大小的整数很慢,而numpy
尝试通过坚持机器友好的类型来加速计算。
另一方面,浮点是标准 IEEE 浮点,无论是在 Python 还是在numpy
,由我们的处理器提供开箱即用的支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)