相关疑难解决方法(0)

numpy float:比算术运算中的内置慢10倍?

我为以下代码得到了非常奇怪的时间:

import numpy as np
s = 0
for i in range(10000000):
    s += np.float64(1) # replace with np.float32 and built-in float
Run Code Online (Sandbox Code Playgroud)
  • 内置浮子:4.9秒
  • float64:10.5 s
  • float32:45.0 s

为什么float64比两倍慢float?为什么float32比float64慢5倍?

有没有办法避免使用的惩罚np.float64,并有numpy功能返回内置float而不是float64

我发现使用numpy.float64比Python的浮点慢得多,numpy.float32甚至更慢(即使我在32位机器上).

numpy.float32在我的32位机器上.因此,每次我使用各种numpy函数时numpy.random.uniform,我将结果转换为float32(以便以32位精度执行进一步的操作).

有没有办法在程序或命令行中的某处设置单个变量,并使所有numpy函数返回float32而不是float64

编辑#1:

在算术计算中,numpy.float64 比浮点慢10倍.它非常糟糕,甚至在计算之前转换为浮动和返回使程序运行速度提高了3倍.为什么?我能做些什么来解决它吗?

我想强调一下,我的时间安排不是由以下任何原因引起的:

  • 函数调用
  • numpy和python float之间的转换
  • 对象的创建

我更新了我的代码,以便更清楚地解决问题所在.使用新代码,我发现使用numpy数据类型可以看到十倍的性能:

from datetime import datetime
import numpy as np

START_TIME = …
Run Code Online (Sandbox Code Playgroud)

python floating-point performance numpy

47
推荐指数
5
解决办法
1万
查看次数

标签 统计

floating-point ×1

numpy ×1

performance ×1

python ×1