相关疑难解决方法(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万
查看次数

如何通过numpy数组最大化效率?

我刚刚开始知道numpy,我对它的ndarray中的内存访问类C效率的说法印象深刻.我想看看这些和pythonic列表之间的区别对于我自己,所以我进行了快速计时测试,在没有它的情况下执行一些相同的简单任务numpy.正如预期的那样,Numpy在数组的分配和算术运算中将常规列表的数量超出了一个数量级.但是这两段代码在两个测试中都相同,使用常规列表大约需要1/8秒,而numpy则需要2.5秒多一点:

file = open('timing.log','w')
for num in a2:
    if num % 1000 == 0:
        file.write("Multiple of 1000!\r\n")

file.close()
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样,如果有其他语法我应该用于这样的操作,以更好地利用ndarray可以做什么?

谢谢...

编辑:回答韦恩的评论......我反复和按照不同的顺序对他们进行计时,每次得到几乎相同的结果,所以我怀疑这是另一个过程.我放

start = time()
Run Code Online (Sandbox Code Playgroud) 在numpy导入之后在文件的顶部然后我有类似的语句
print 'Time after traversal:\t',(time() - start)
Run Code Online (Sandbox Code Playgroud) 始终.

python performance numpy

7
推荐指数
3
解决办法
3370
查看次数

标签 统计

numpy ×2

performance ×2

python ×2

floating-point ×1