Art*_*rin 7 python types numpy
考虑以下:
>>> 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
Run Code Online (Sandbox Code Playgroud)
NumPy numpy.int_
和numpy.float_
类型都在Python的数字抽象基类层次结构中,但我很奇怪,np.int_
对象不是内置int
类的实例,而np.float_
对象是内置float
类型的实例.
为什么会这样?
Ama*_*dan 10
Python整数可以是任意长度:type(10**1000)
仍然是int
,并且如果输出它将在屏幕上打印出一个然后一千个零.
Numpy int64
(这是int_
我机器上的内容)是由8个字节(64位)表示的整数,并且无法表示任何内容.例如,np.int_(10)**1000
会给你一个错误的答案 - 但很快;).
因此,它们是不同种类的数字; 继承一个在另一个之下使得与在子int
下的子类化一样有意义float
,这是我认为numpy
人们的想法.最好将它们分开,这样就没有人对混淆它们是不明智的事实感到困惑.
完成拆分是因为任意大小的整数很慢,同时numpy
试图通过坚持机器友好类型来加速计算.
另一方面,浮点数是标准的IEEE浮点数,无论是在Python还是在内,numpy
都由我们的处理器支持开箱即用.
归档时间: |
|
查看次数: |
464 次 |
最近记录: |