编程语言
首页 > 编程语言> > 为什么在(nopython = True)时numba引发有关numpy方法的错误?

为什么在(nopython = True)时numba引发有关numpy方法的错误?

作者:互联网

我正在尝试使用numba来提高我编写的某些速度很慢的代码的速度.花费的大部分时间都花在单个功能上.首先我尝试使用

@jit 

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

@jit(nopython=True) 

代替.根据我在文档中阅读的内容,应该支持我在函数中使用的numpy方法(例如,转置).但是,我收到一个错误

Failed at nopython (nopython frontend)
Untyped global name '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作为参考.

标签:numba,python,numpy
来源: https://codeday.me/bug/20191027/1941371.html