为什么numba在numpy方法时抛出错误(nopython = True)?

时间:2016-05-12 21:02:01

标签: python numpy numba

我正在尝试使用numba来提高我编写的一些代码速度相当慢。花费的大部分时间都在一个功能中。首先我尝试使用

@jit 

在我的函数定义之前,它改进了时序。然后,我尝试使用

@jit(nopython=True) 

代替。从我在文档中看到的内容,我应该支持我在函数中使用的numpy方法(例如转置)。但是,我收到了错误

Failed at nopython (nopython frontend)
Untyped global name 'transpose'

1 个答案:

答案 0 :(得分:4)

为了使用transpose,您需要以numpy数组的方法形式调用它(作为文档describe)。以下是有效的:

import numpy as np
import numba as nb

@nb.jit(nopython=True)
def func(x):
    y = x.transpose()  # or x.T
    return y

x = np.random.normal(size=(4,4))
x_t = func(x)

但是在函数中调用y = np.transpose(x)却没有。我假设你正在做后者。注意,我使用Numba 0.25.0作为参考。