有没有办法使用numba与“nopython = True”和numpy / scipy / sklearn

时间:2015-05-08 16:55:00

标签: python arrays numpy scikit-learn numba

我是numba的新手但对可能性感到兴奋。我正在尝试在N x N矩阵的每一行上运行最小二乘算法(20964 x 20964)。在每一行,我必须更新“model_array”,以便该行乘以外部预测器。

(对于它的价值,我还测试了sklearn.linear_model.LinearRegression,statsmodels.OLS和scipy.linalg.lstsq,但是numpy实现看起来最快。)

所以我基本上希望运行“ppi”20964次,每次迭代包括20964个最小二乘配件。 “ppi”在对象模式下工作正常(使用“@jit”),但每次迭代需要2.2秒。鉴于“dim_vox”= 20964,我正在寻求提高速度。下面是我想要在每一行运行的内循环:

@jit
def fit_ex(modarr, yseries):
    return np.linalg.lstsq(modarr, yseries)[0][2]

@njit
def ppi(timeseries, nvox, modarr, a):
    for j in range(nvox):
        yt = timeseries[j, :]
        a[j] = fit_ex(modarr, yt)

ts = np.loadtxt(ts_name)
dim_vox, dim_ts = ts.shape
a = np.zeros(dim_vox, dtype=np.float64)

和“model_array”是一个n x m numpy数组。 然后运行这个

ppi(ts, dim_vox, model_array, a)

给出以下错误:

TypingError: Failed at nopython (nopython frontend)
Internal error at <numba.typeinfer.CallConstrain object at 0x117f65290>:

File "<ipython-input-407-de1b4104525d>", line 6

我正在使用numba 0.18.2,python 2.7.9。如果我对一些显而易见的东西进行掩饰,我会道歉。

0 个答案:

没有答案