我有一个在fframe中使用周期性边界条件添加内核的代码。
我根据这个帖子实现了周期性边界条件在周期性条件下对numpy数组进行分片。.
在numba上使用@jit包装器可以工作,但我没有得到任何加速。
我得到了这个错误。
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.
我如何在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
"""
谢谢:)
有一个问题是,randint在numba中只接受2个参数。
https:/numba.pydata.orgnumba-docdevreferencenumpysupported.html。