У меня есть код, который добавляет ядро в 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
" ""
Спасибо:)