gpt4 book ai didi

python - 平方和 - np.inner vs 先平方,然后求和

转载 作者:太空狗 更新时间:2023-10-29 21:48:58 25 4
gpt4 key购买 nike

令我惊讶的是,调用 np.inner 计算平方和比在预先计算的平方数组上调用 np.sum 快大约 5 倍:

sum of squares code

对这种行为有什么见解吗?实际上,我对平方和的快速实现很感兴趣,因此也欢迎提出这些想法。

最佳答案

要检查哪些模块 np.innernp.sum 被实现,我输入

>>> np.inner.__module__
'numpy.core.multiarray'
>>> np.sum.__module__
'numpy.core.fromnumeric'
>>> np.__file__
'/Users/uweschmitt/venv_so/lib/python3.5/site-packages/numpy/__init__.py'

如果您检查实际文件,您会发现 numpy.core.multiarray 是一个纯 C 模块,而 numpy.core.fromnumeric 首先进行一些检查和转换在 Python 中,在第二个 Python 函数之前调用,然后调用用于实际求和的纯 C 实现。

我怀疑 Python 解释器的这种开销解释了观察到的时间差异。

为了证明我的假设,我用一个更大的数组运行计时并得到

In [8]: a = np.random.random(1000000)
In [9]: %timeit np.inner(a, a)
1000 loops, best of 3: 673 µs per loop
In [10]: %timeit np.sum(a)
1000 loops, best of 3: 584 µs per loop

现在运行时间非常相似,如果重复这些语句,运行时间会略有不同,有时 np.sum 获胜,有时 np.inner

对于大数组,np.sum 的实际工作是在 C 中完成的,Python 解释器的恒定时间开销可以忽略不计。

关于python - 平方和 - np.inner vs 先平方,然后求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863087/

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