gpt4 book ai didi

python - 提高 numpy 三角函数运算的性能

转载 作者:太空狗 更新时间:2023-10-30 01:57:57 25 4
gpt4 key购买 nike

我有一个相当大的代码需要优化。在使用 time.time() 进行一些分析后,我发现占用处理时间最多的行(它被执行了数千次)是这一行:

A = np.cos(a) * np.cos(b) - np.sin(a) * np.sin(b) * np.sin(c - d)

所有变量都可以随机定义:

N = 5000
a = np.random.uniform(0., 10., N)
b = np.random.uniform(0., 50., N)
c = np.random.uniform(0., 30., N)
d = np.random.uniform(0., 25., N)

有没有办法提高A的计算性能?因为我已经在使用 numpy,所以我几乎没有想法。

最佳答案

通过使用 product-to-sum trig. identities ,您可以减少触发次数。函数调用。在下文中,func1func2 计算相同的值,但 func2 对 trig 的调用较少。功能。

import numpy as np

def func1(a, b, c, d):
A = np.cos(a) * np.cos(b) - np.sin(a) * np.sin(b) * np.sin(c - d)
return A

def func2(a, b, c, d):
s = np.sin(c - d)
A = 0.5*((1 - s)*np.cos(a - b) + (1 + s)*np.cos(a + b))
return A

这是与 N = 5000 的时序比较:

In [48]: %timeit func1(a, b, c, d)
1000 loops, best of 3: 374 µs per loop

In [49]: %timeit func2(a, b, c, d)
1000 loops, best of 3: 241 µs per loop

关于python - 提高 numpy 三角函数运算的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569186/

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