gpt4 book ai didi

python-3.x - python numba指纹错误

转载 作者:行者123 更新时间:2023-12-04 15:32:08 28 4
gpt4 key购买 nike

我正在尝试使用 numba 来优化一些代码。我已经完成了 0.26.0 用户指南 ( http://numba.pydata.org/numba-doc/0.26.0/user/jit.html ) 中第 1.3.1 节中的初始示例并获得了预期的结果,所以我认为问题不在于安装。

这是我的代码:

import numba
import numpy
import random

a = 8
b = 4

def my_function(a, b):
all_values = numpy.fromiter(range(a), dtype = int)
my_array = []
for n in (range(a)):
some_values = (all_values[all_values != n]).tolist()
c = random.sample(some_values, b)
my_array.append(sorted([n] + c))
return my_array

print(my_function(a, b))

my_function_numba = numba.jit()(my_function)

print(my_function_numba(a, b))

从 my_function 调用打印出预期结果后,返回以下错误消息:
ValueError                                Traceback (most recent call last)
<ipython-input-8-b5d8983a58f6> in <module>()
19 my_function_numba = numba.jit()(my_function)
20
---> 21 print(my_function_numba(a, b))

ValueError: cannot compute fingerprint of empty list

空列表的指纹?

最佳答案

我不确定那个错误,但总的来说,要快 numba需要 numpy/python 的特定子集(更多信息请参见 herehere)。所以我可能会像这样重写它。

@numba.jit(nopython=True)
def fast_my_function(a, b):
all_values = np.arange(a)
my_array = np.empty((a, b + 1), dtype=np.int32)
for n in range(a):
some = all_values[all_values != n]
c = np.empty(b + 1, dtype=np.int32)
c[1:] = np.random.choice(some, b)
c[0] = n
c.sort()
my_array[n, :] = c
return my_array

主要注意事项:
  • 没有列表,我正在预先分配所有内容。
  • 不使用生成器(在 python 2 和 3 中 for n in range(a) 将被转换为快速本地循环)
  • 添加 nopython=True给装饰器使其如此 numba 会提示如果我使用无法有效 JIT 的东西。
  • 关于python-3.x - python numba指纹错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37768647/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com