首页 > 解决方案 > 使用 njit(numba) 时是否可以将 int 转换为数组?

问题描述

我想知道在 numba 中使用 njit 时是否可以将 int 转换为数组?抱歉,如果这是一个简单的问题,我是图书馆的新手,希望了解更多信息。

我尝试了以下方法:

import numpy as np 
from numba import njit 

    @njit
    def top(f):
        if f =="TRUE":
             t = 0
             for i in range(10):
                  t = t+1
             t = np.array(t)
             return t
    
    top("TRUE") 

但得到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/numba/dispatcher.py", line 401, in _compile_for_args
    error_rewrite(e, 'typing')
  File "/usr/lib/python3/dist-packages/numba/dispatcher.py", line 344, in error_rewrite
    reraise(type(e), e, None)
  File "/usr/lib/python3/dist-packages/numba/six.py", line 668, in reraise
    raise value.with_traceback(tb)
numba.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Cannot unify int64 and array(int64, 0d, C) for 't', defined at <stdin> (4)

File "<stdin>", line 4:
<source missing, REPL/exec in use?>

[1] During: typing of assignment at <stdin> (7)

File "<stdin>", line 7:
<source missing, REPL/exec in use?>

标签: python-3.xnumpynumba

解决方案


您可能不应该在 numba 函数中更改变量的类型(类似于您无法在 C 函数中这样做的原因)。这似乎有效:

@njit
def top(f):
    if f =="TRUE":
        t = 0
        for i in range(10):
            t = t+1
        return np.array([t])

推荐阅读