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

时间:2017-10-02 12:32:52

标签: python numpy optimization ode numba

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

为了优化性能,我对此进行了分析,发现主要的瓶颈是(在使用PyFFTW等优化FFT之后):

val = np.exp(float_value * arr)

我目前正在使用我理解为调用C代码的numpy - 因此应该很快。但是,还有什么方法可以进一步提高性能吗?

我已经研究过使用Numba,但由于我的主循环也包含FFT,我不认为它可以被编译(nopython = True flag会导致错误)因此,我怀疑它没有提供任何收益

以下是我想要优化的代码的测试示例:

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

任何建议都表示欢迎。

1 个答案:

答案 0 :(得分:3)

我们可以利用numexpr module,它可以有效地处理涉及超越操作的大数据 -

EnableWebSecurity
class SecurityConfig : WebSecurityConfigurerAdapter() {

    override fun configure(http: HttpSecurity) {
        http.authorizeRequests()
                .requestMatchers(matcher)
                .denyAll()
                .antMatchers("/css/**", "/index")
                .permitAll()
                .antMatchers("/user/**")
                .hasRole("USER")

        http.formLogin()
                .loginPage("/login")
                .failureUrl("/login-error")
    }
}

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