小编tib*_*ius的帖子

如何在 python 中使用 numba.jit 将计算值传递到列表排序?

我正在尝试使用 Python 中的 numba-jit 函数中的自定义键对列表进行排序。简单的自定义键可以工作,例如我知道我可以使用如下所示的绝对值进行排序:

import numba

@numba.jit(nopython=True)
def myfunc():
    mylist = [-4, 6, 2, 0, -1]
    mylist.sort(key=lambda x: abs(x))
    return mylist  # [0, -1, 2, -4, 6]
Run Code Online (Sandbox Code Playgroud)

但是,在下面更复杂的示例中,我收到一个我不理解的错误。

import numba
import numpy as np


@numba.jit(nopython=True)
def dist_from_mean(val, mu):
    return abs(val - mu)

@numba.jit(nopython=True)
def func():
    l = [1,7,3,9,10,-4,-2,0]
    avg_val = np.array(l).mean()
    l.sort(key=lambda x: dist_from_mean(x, mu=avg_val))
    return l
Run Code Online (Sandbox Code Playgroud)

它报告的错误如下:

Traceback (most recent call last):
  File "testitout.py", line 18, in <module>
    ret = func()
  File "/.../python3.6/site-packages/numba/core/dispatcher.py", line 415, in _compile_for_args
    error_rewrite(e, …
Run Code Online (Sandbox Code Playgroud)

python jit numba

5
推荐指数
1
解决办法
1880
查看次数

标签 统计

jit ×1

numba ×1

python ×1