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

Мне нужно скомпилировать небольшой фрагмент кода Python с помощью Numba. К сожалению, он включает эту строку:

result= np.insert(result, pos_to_modify, add_data, 0)

, где он вставляет add_data в массив результатов в позиции pos_to_modify. Однако это не поддерживается Numba, поэтому компиляция не выполняется.

Я просматривал поддерживаемые методы, которые могу использовать (https://numba.pydata.org/numba-doc/dev/reference/numpysupported.html), но не могу найти эквивалентный способ сделать это. Я новичок в NumPy.

Есть ли быстрый способ выполнить sh это, используя только методы на этой странице?

Я придумал это:

def insert_into_array(array, pos, array_to_insert):
    if pos == 0:
        return np.concatenate((array_to_insert, array))
    elif pos == len(array):
        return np.concatenate((array, array_to_insert))
    else:
        start = array[0:pos]
        end = array[pos:len(array)]
        return np.concatenate(np.concatenate((start, array_to_insert)), end)

, но поскольку это должно работать на графическом процессоре, я бы хотел избежать этого оператора if / else.

...