У меня есть двумерный массив numpy, и я хочу замаскировать круговые области вокруг нескольких конкретных элементов. Это легко для элементов, не находящихся вблизи краев. Но когда диск становится усеченным для позиций вблизи края массива, операция маскирования генерирует исключение.numpy круговые маски вырезаны, усеченные на краях 2D-массива
Что такое хороший способ маскировать эти краевые источники? Периодическое заполнение ..? Благодаря!
Вот код:
import numpy as np
x_count = 20000
y_count = 20000
a = np.arange(y_count * x_count).reshape(y_count, x_count) # data
master_mask=np.zeros(a.shape).astype(bool)
coords=([10,50],[500,400])
nsrc=len(coords)
mask_radius=100 # 10, 20, etc.
for isrc in range(nsrc):
xc=coords[isrc][0]; yc=coords[isrc][1]
x,y = np.ogrid[-mask_radius:mask_radius+1,-mask_radius:mask_radius+1]
minimask = x*x + y*y <= mask_radius*mask_radius
box=master_mask[xc-mask_radius:xc+mask_radius+1,yc-mask_radius:yc+mask_radius+1]
assert(minimask.shape==box.shape), 'This assertion should fail for discs touching the edge'
master_mask[xc-mask_radius:xc+mask_radius+1,yc-mask_radius:yc+mask_radius+1] += minimask
print master_mask
показать нам свой код ... – shx2