我正在尝试使用numba来提高我编写的某些速度很慢的代码的速度。花费的大部分时间都花在单个功能上。首先我尝试使用
@jit
在我的函数定义之前,它改善了时序。然后,我尝试使用
@jit(nopython=True)
反而。从我在文档中阅读的内容来看,应该支持我在函数中使用的numpy方法(例如,转置)。但是,我遇到了一个错误
Failed at nopython (nopython frontend)
Untyped global name 'transpose'
最佳答案
为了使用transpose
,您需要以numpy数组的方法的形式调用它(作为docs 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作为引用。关于python - 为什么在(nopython = True)时numba引发有关numpy方法的错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37197341/