无法在 64 位架构的 Python 中使用 128 位浮点数
Cannot use 128bit float in Python on 64bit architecture
我检查了 python 终端中指针的大小(在 Enthought Canopy IDE 中)
通过
import ctypes
print (ctypes.sizeof(ctypes.c_voidp) * 8)
我有一个 64 位架构,使用 numpy.float64
就好了。但是我不能使用 np.float128
?
np.array([1,1,1],dtype=np.float128)
或
np.float128(1)
结果:
AttributeError: 'module' object has no attribute 'float128'
我是运行以下版本:
sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)
更新:从评论来看,在 64 位系统上使用 128 位浮点数似乎毫无意义。
我在 64 位 Ubuntu 14.04 系统上使用 anaconda
sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
和 128 位浮点数工作正常:
import numpy
a = numpy.float128(3)
这可能是分发问题。尝试:
- Install Anaconda
- Update canopy
- 检查路径中python的版本是anaconda提供的还是canopy
编辑:
来自评论的更新:
Not my downvote, but this post doesn't really answer the "why doesn't
np.float128 exist on my machine" implied question. The true answer is
that this is platform specific: float128 exists on some platforms but
not others, and on those platforms where it does exist it's almost
certainly simply the 80-bit x87 extended precision type, padded to 128
bits. – Mark Dickinson
对我来说,问题是 Python 模块在 Windows 中有问题(PyOpenGL 对于那些关心的人)。 This 站点有 Python 轮子,其中包含许多流行模块的“固定”版本,以解决 float128 问题。
注意:这个问题有一个公认的答案。我的回答是为了未来的搜索者,因为这个问题在 module 'numpy' has no attribute 'float128'
的 Google 结果中很高。
我检查了 python 终端中指针的大小(在 Enthought Canopy IDE 中) 通过
import ctypes
print (ctypes.sizeof(ctypes.c_voidp) * 8)
我有一个 64 位架构,使用 numpy.float64
就好了。但是我不能使用 np.float128
?
np.array([1,1,1],dtype=np.float128)
或
np.float128(1)
结果:
AttributeError: 'module' object has no attribute 'float128'
我是运行以下版本:
sys.version_info(major=2, minor=7, micro=6, releaselevel='final', serial=0)
更新:从评论来看,在 64 位系统上使用 128 位浮点数似乎毫无意义。
我在 64 位 Ubuntu 14.04 系统上使用 anaconda
sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
和 128 位浮点数工作正常:
import numpy
a = numpy.float128(3)
这可能是分发问题。尝试:
- Install Anaconda
- Update canopy
- 检查路径中python的版本是anaconda提供的还是canopy
编辑: 来自评论的更新:
Not my downvote, but this post doesn't really answer the "why doesn't np.float128 exist on my machine" implied question. The true answer is that this is platform specific: float128 exists on some platforms but not others, and on those platforms where it does exist it's almost certainly simply the 80-bit x87 extended precision type, padded to 128 bits. – Mark Dickinson
对我来说,问题是 Python 模块在 Windows 中有问题(PyOpenGL 对于那些关心的人)。 This 站点有 Python 轮子,其中包含许多流行模块的“固定”版本,以解决 float128 问题。
注意:这个问题有一个公认的答案。我的回答是为了未来的搜索者,因为这个问题在 module 'numpy' has no attribute 'float128'
的 Google 结果中很高。