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

2024-10-01 02:40:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我是麻木的新手,但我很兴奋。我试着对nxn矩阵(20964x20964)的每一行运行一个最小二乘算法。在每一行,我必须更新“model_array”,使该行乘以一个外部预测器。在

(为了它的价值,我也测试过sklearn.linear_模型.线性回归,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数组。 然后运行这个

^{pr2}$

给出以下错误:

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

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

我使用的是numba0.18.2,python2.7.9。如果我掩饰了一些显而易见的事情,我很抱歉。在


Tags: numpymodeldefnpppiarray速度at