Python float类型与Decimal

时间:2013-07-11 14:10:10

标签: python numpy floating-point decimal

我是物理学TCD的实习生。

我编写了一个代码来对随机粒子填充进行一些数据分析。代码是用Python编写的。

代码读取我的主管提供的.txt文件中的数据列。

以下是数据示例:

0.52425196504624715921  0.89754790324432953685  0.44222783508101531913

我写了以下代码来读取数据:

from decimal import Decimal
from numpy import *

c1,c2,r = loadtxt("second.txt", usecols=(0,1,2), unpack=True, dtype = dtype(Decimal))

如您所见,我使用Decimal dtype读取数字的所有小数位,并确保计算可靠。

现在,为了加快我的代码,我想知道是否有一个numpy dtype使事情更快,但仍然使用所有小数位。我试过了:

c1,c2,r = loadtxt("second.txt", usecols=(1,2,4), unpack=True, dtype = float128)

c1,c2,r = loadtxt("second.txt", usecols=(1,2,4), unpack=True, dtype = longdouble)

然而,这是输出比较:

Decimal :    0.98924652608783791852
float128 :   0.98924653
longdouble : 0.98924653
float32 :    0.98924655

我使用的是台式机,64位,4GB内存。

那么,我尝试用C ++编写一个代码,它基本上将数据列的每个元素乘以10的足够幂,以便生成一个新的.txt文件,其中包含以下列:

52425196504624715921    89754790324432953685    44222783508101531913

但回到我的Python代码(我必须在Python中执行此操作):

  c1,c2,r = loadtxt("second.txt", usecols=(1,2,4), unpack=True, dtype = int)

我收到以下错误消息:

 OverflowError: Python int too large to convert to C long

请原谅我对该语言的有限了解。

非常欢迎任何解决方案:我真的需要通过直接读取数据或执行所需的整数转换来加速代码。

0 个答案:

没有答案