нарезка - numpy -рассе в периоде c -условия с нумбой - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть код, который добавляет ядро ​​в fframe с использованием периодических c граничных условий на этом кадре.

Я реализовал периодические c граничные условия согласно этому посту нарезка numpy массив в периоде c условия .

Он работает с Numba с оберткой @jit, но я не набираю скорости. Когда я добавляю @ njit

, я получаю эту ошибку.

TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Invalid use of Function(<built-in function setitem>) with argument(s) of 
type(s): (array(int64, 2d, C), tuple(array(int64, 2d, C) x 2), array(int32,2d, C))
 * parameterized
In definition 0:

All templates rejected with literals.

Как мне обойтись с этим разрезанием индекса для периодических c граничных условий в numba?

"" "

kernell = np.random.randint(0,10,(25,25))
fframe = np.random.randint(0,2,(77,77))

@njit
def init_test(frame, kernel, nn):
    dimXsp, dimYsp = kernel.shape
    dimXfr, dimYfr =frame.shape

    Xcoord = np.random.randint(0,dimXfr,nn)
    Ycoord = np.random.randint(0,dimYfr,nn)

    black = frame * 0

    for ff in prange(nn):
        sl0 = np.arange(Xcoord[ff]-dimXsp//2,Xcoord[ff]+dimXsp//2+1).reshape(-1,1)% dimXfr
        sl1 = np.arange(Ycoord[ff]-dimYsp//2,Ycoord[ff]+dimYsp//2+1).reshape(1,-1)% dimYfr

        black[sl0,sl1] = kernel

    return Xcoord, Ycoord, black

" ""

Спасибо:)

1 Ответ

1 голос
/ 29 апреля 2020

Одна проблема состоит в том, что randint принимает только 2 аргумента в numba:

https://numba.pydata.org/numba-doc/dev/reference/numpysupported.html

...