gpt4 book ai didi

python - 为什么 NumPy int 不是 Python int 的实例,而 NumPy float 是 Python float 的实例?

转载 作者:太空狗 更新时间:2023-10-29 21:30:22 27 4
gpt4 key购买 nike

考虑以下几点:

>>> 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 的 numpy.int_numpy.float_ 类型都在 Python 的 numeric abstract base class hierarchy 中, 但令我感到奇怪的是 np.int_ 对象不是内置 int 类的实例,而 np.float_ 对象内置float 类型的实例。

为什么会这样?

最佳答案

Python 整数可以是任意长度:type(10**1000) 仍然是 int,如果你输出它。

Numpy int64(这是我机器上的 int_)是用 8 个字节(64 位)表示的整数,超过它的任何东西都无法表示。例如,np.int_(10)**1000 会给你一个错误的答案——但很快 ;)。

因此,它们是不同种类的数字;将一个子类化为另一个子类化与将 int 子类化为 float 一样有意义,这就是我认为 numpy 人们的想法。最好将它们分开,这样就不会有人对将它们混淆是不明智的事实感到困惑。

完成拆分是因为任意大小的整数速度很慢,而 numpy 试图通过坚持使用机器友好的类型来加快计算速度。

另一方面, float 是标准的 IEEE float ,无论是在 Python 还是在 numpy 中,我们的处理器都支持开箱即用。

关于python - 为什么 NumPy int 不是 Python int 的实例,而 NumPy float 是 Python float 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51186804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com