用numba优化python函数

时间:2016-11-04 15:45:00

标签: python arrays optimization numba

我正在尝试使用numba加速python函数,但是我似乎无法使其编译。 我的函数的输入是一个类型为np.int32的27x4数组。 我的职责是:

@nb.jit(nopython=True)
def edge_profile(input):
    pos = input[:,:3]
    val = input[:,3]
    centre = np.mean(pos,axis=0).astype(np.int32)
    diff = np.absolute(pos-centre).sum(axis=1)
    cell_edge = np.zeros(3)
    for i in range(3):
        idx = np.where(diff==i+1)[0]
        idy = np.where(val[idx]==1)[0]
        cell_edge[i] = len(idy)
    return cell_edge.astype(np.int32)

然而,这会产生一个非常大的错误消息,我无法用它来诊断问题。我尝试按如下方式指定输入类型:

@nb.jit(nb.int32[:](nb.int32[:,:]))
def ...

然而,这会产生同样大的错误消息。 我觉得我可能正在使用numba不支持的某些功能/功能,但我不太了解它以确定问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

只要您坚持要加速的功能中的基本列表和数组,Numba就可以正常工作。您似乎已经在使用 numpy 中可能已经过优化的功能。所以,即使你确实让它起作用,你也不太可能看到加速。你还没有提到你的操作系统是什么。在ubuntu 14.04下,您可以通过here概述的一些步骤来完成它。