gpt4 book ai didi

python - np.power 做了哪些额外的工作?

转载 作者:IT老高 更新时间:2023-10-28 20:27:22 25 4
gpt4 key购买 nike

我意识到 np.power(a, b)np.exp(b * np.log(a)) 慢:

import numpy as np
a, b = np.random.random((2, 100000))
%timeit np.power(a, b) # best of 3: 4.16 ms per loop
%timeit np.exp(b * np.log(a)) # best of 3: 1.74 ms per loop

结果相同(有一些 1e-16 级的数字错误)。

np.power 中做了哪些额外的工作?此外,我自己如何才能找到这些问题的答案?

最佳答案

Under the hood两个表达式调用各自的 C 函数 powexplogrunning a profiling on those in C++ ,没有任何 numpy 代码,给出:

pow      : 286 ms
exp(log) : 93 ms

这与 numpy 时序一致。因此,主要区别似乎是 C 函数 powexp(log) 慢。

为什么?似乎部分原因是表达式对于所有输入都不等价。例如,对于负 a 和整数 bpower 有效,而 exp(log) 失败:

>>> np.power(-2, 2)
4
>>> np.exp(2 * np.log(-2))
nan

另一个例子是0 ** 0:

>>> np.power(0, 0)
1
>>> np.exp(0 * np.log(0))
nan

因此,exp(log) 技巧仅适用于输入的子集,而 power 适用于所有(有效)输入。

除此之外,power 保证根据 IEEE 754 standard 提供完整的精度。 , 而 exp(log) 可能会出现舍入错误。

关于python - np.power 做了哪些额外的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45544189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com