gpt4 book ai didi

python - 在 Python 中计算大型复杂数组的指数 [exp()] 函数的最快方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:53:06 28 4
gpt4 key购买 nike

我正在开发使用 scipy 的 complex_ode 集成 ODE 的代码,其中被积函数包括傅立叶变换和指数运算符,用于处理大量复值。

为了优化性能,我分析了这一点并发现主要瓶颈(在使用 PyFFTW 等优化 FFT 之后)在以下行中:

val = np.exp(float_value * arr)

我目前正在使用 numpy,我知道它调用 C 代码 - 因此应该很快。但是请问有什么办法可以进一步提高性能吗?

我研究过使用 Numba,但由于我的主循环也包含 FFT,我认为它无法编译(nopython=True 标志会导致错误),因此,我怀疑它没有任何好处。

这是我要优化的代码的测试示例:

arr = np.random.rand(2**14) + 1j *np.random.rand(2**14)
float_value = 0.5
%timeit np.exp(float_value * arr)

欢迎提出任何建议,谢谢。

最佳答案

我们可以利用 numexpr module ,它在涉及先验操作的大数据上非常有效 -

In [91]: arr = np.random.rand(2**14) + 1j *np.random.rand(2**14)
...: float_value = 0.5
...:

In [92]: %timeit np.exp(float_value * arr)
1000 loops, best of 3: 739 µs per loop

In [94]: import numexpr as ne

In [95]: %timeit ne.evaluate('exp(float_value*arr)')
1000 loops, best of 3: 241 µs per loop

这似乎与 expected performance 一致如文档中所述。

关于python - 在 Python 中计算大型复杂数组的指数 [exp()] 函数的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525524/

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