gpt4 book ai didi

python - 为什么 numpy 平方根反比 "x**(-1/2)"比 "1/np.sqrt(x)"慢这么多

转载 作者:行者123 更新时间:2023-12-05 09:02:46 27 4
gpt4 key购买 nike

在 numpy 中,平方根和 1/2 的幂在速度上几乎没有区别。然而,当对 -1/2 的幂进行平方根倒数运算时,后者大约慢 10 倍。

# Python 3.10.2; numpy 1.22.1; clang-1205.0.22.11; macOS 12.1
import numpy as np

arr = np.random.uniform(0, 1, 10000)


%timeit -n 10000 np.sqrt(arr)
%timeit -n 10000 arr**(1/2)

%timeit -n 10000 1 / np.sqrt(arr)
%timeit -n 10000 arr**(-1/2)
10.8 µs ± 472  ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
9.97 µs ± 449 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)

18.2 µs ± 673 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
187 µs ± 13.1 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)

更熟悉源代码实现的人能解释一下区别吗?

最佳答案

numpy{-1, 0, 0.5, 1, 2} 中生成指数的特殊情况,但没有其他情况。有 an issue opened in 2017向这个集合添加 -2 和 -0.5,但似乎还没有朝这个方向做任何事情。

关于python - 为什么 numpy 平方根反比 "x**(-1/2)"比 "1/np.sqrt(x)"慢这么多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70950360/

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