2016-05-12 33 views
1

我想用numba來提高一些我寫的代碼速度很慢。大部分時間用於單一功能。首先,我嘗試使用只是當(nopython = True)時,爲什麼numba會拋出有關numpy方法的錯誤?

@jit 

之前,我的功能定義,這改善了計時了一下。然後,我嘗試使用

@jit(nopython=True) 

改爲。從我在文檔中讀到的內容中,應該支持我在函數中使用的numpy方法(例如,轉置)。不過,我得到一個錯誤

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

numpy支持的功能的完整列表可以在下面的鏈接找到。此外,郵政編碼和您正在使用的版本,否則很難診斷出現問題:http://numba.pydata.org/numba-doc/latest/reference/numpysupported.html – JoshAdel

+0

我不太確定如何檢查我正在使用哪個版本。 'numba --verison'似乎不起作用。我認爲它是0.27.0,但我不確定。 – chia

回答

2

爲了使用transpose,你需要調用它(如文檔describe)在numpy的陣列的方法的形式。所以下面的工作:

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作爲參考。

+0

是的,你是對的。我正在使用numpy.transpose(x)。 – chia

相關問題