Numba не компилируется с очень странным сообщением - кажется, это должно работать? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть простая функция, которая не может быть скомпилирована с помощью декоратора Numba @njit:

@njit(fastmath=True, nogil=True)
def insert_into_array(array, pos, array_to_insert):
    start = array[0:pos]
    end = array[pos:len(array)]
    inserted = np.concatenate((start, array_to_insert))
    return np.concatenate(inserted, end)

Ошибка с этим сообщением:

Failed in nopython mode pipeline (step: nopython frontend)
Invalid use of Function(<function concatenate at 0x000001E88B04E8B0>) with argument(s) of type(s): (array(uint8, 1d, C), array(uint8, 1d, C))
 * parameterized
In definition 0:
    All templates rejected with literals.
In definition 1:
    All templates rejected without literals.
This error is usually caused by passing an argument of a type that is unsupported by the named function.
[1] During: resolving callee type: Function(<function concatenate at 0x000001E88B04E8B0>)

Обратите внимание, что не работают следующие типы: (array(uint8, 1d, C), array(uint8, 1d, C)) - в основном пытается объединить два простых массива 1d.

У меня много проблем с пониманием того, что мне делать, чтобы исправить это, поскольку функция NumPy concatenate указана как поддерживаемая функция от Numba.

Я использую Python 3.7 и Numba 0.50

Есть идеи, что я делаю не так?

Спасибо!

1 Ответ

0 голосов
/ 11 июля 2020

Это похоже на функцию, которая вообще не выигрывает от ошеломления. В любом случае, первый аргумент np.concatenate должен быть кортежем, вы не можете передавать var args. Это пытается сделать ваш последний звонок.

...