我是TCD物理系的实习生。在
我写了一个代码来执行随机粒子填充的一些数据分析。代码是用Python编写的。在
代码从我的主管提供的.txt文件中读取数据列。在
以下是数据示例:0.52425196504624715921 0.89754790324432953685 0.44222783508101531913
我写了以下代码来读入数据:
^{pr2}$
如您所见,我使用Decimal数据类型读取该数字的所有小数位,并确保计算是可靠的。在
现在,为了加速我的代码,我想知道是否有一个numpy数据类型可以让事情变得更快,但是仍然使用所有的小数位。我确实尝试过: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
请原谅我对这门语言的了解有限。在
任何解决方案都是非常受欢迎的:我确实需要加快代码的速度,要么直接读取数据,要么执行所需的整数转换。在