numpy 无法在64位架构上的Python中使用128位浮点数

roqulrg3  于 2023-10-19  发布在  Python
关注(0)|答案(2)|浏览(163)

我在我的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)
flvlnr44

flvlnr441#

更新:从评论来看,在64位系统上使用128位浮点数似乎毫无意义。
我在64位Ubuntu 14.04系统上使用sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0)
128位浮点数工作正常:

import numpy
a = numpy.float128(3)

这可能是一个分配问题。试试看:

编辑:来自评论的更新:
不是我的反对,但这篇文章并没有真正回答“为什么np.float128不存在于我的机器上”这个隐含的问题。真正的答案是,这是平台特定的:float 128在某些平台上存在,但在其他平台上不存在,在那些确实存在它的平台上,它几乎肯定只是80位x87扩展精度类型,填充到128位。- -马克·迪金森

eyh26e7m

eyh26e7m2#

对我来说,这个问题是一个Python模块在Windows中有问题(PyOpenGL为那些关心的人)。This站点有Python wheels,其中包含许多流行模块的“固定”版本,以解决float128问题。
注意:这个问题有一个公认的答案。我的答案是给未来的搜索者的,因为这个问题在module 'numpy' has no attribute 'float128'的谷歌结果中很高。

相关问题