我有以下代码:
big_k = gabor((height * 2, width *2), (height, width)) #Returns a 2d-array
r = np.arange(0, radialSlices, radialWidth)
p = np.arange(0, angularSlices, angularWidth)
pp, rr = np.meshgrid(p, r, sparse=False)
z = np.sum(img * big_k[height-rr:2*height-rr, width-pp:2*width-pp])
我收到此错误:
z = np.sum(img * big_k[height-rr:2*height-rr, width-pp:2*width-pp])
IndexError: invalid slice
我理解这个错误以及它为什么会发生。问题是你不能用索引数组切片数组。问题是,使用meshgrid是一种加快速度的绝佳方式。摆脱我的代码中的嵌套循环(否则我将不得不迭代angularSlices * radialSlices
)。有没有办法可以meshgrid
切片big_k
?
答案 0 :(得分:0)
您需要自己广播索引,例如:
a = np.zeros((200, 300))
yy, xx = np.meshgrid([10, 40, 90], [30, 60])
hh, ww = np.meshgrid(np.arange(5), np.arange(8))
YY = yy[..., None, None] + hh[None, None, ...]
XX = xx[..., None, None] + ww[None, None, ...]
a[YY, XX] = 1
图像看起来像: