2013-05-06 4 views
1

У меня есть два массива numpy: данные и маска. Маска и данные не имеют одинакового размера, поэтому я представляю их как холст и штамп. Как я могу напечатать свой холст в разных местах?Смещение маски внутри большего массива

import numpy as np 
import matplotlib.pyplot as plt 

# Make a canvas 
canvas = np.zeros(2500).reshape(50, 50) 

# Make a "stamp" 
r = 10 
xx, yy = np.mgrid[ :r * 2, :r * 2 ] 
stamp = ((xx - r) ** 2 + (yy - r) ** 2) < r**2 

# Draw on the canvas 
canvas[stamp] = 10 

# Display the drawing 
plt.imshow(canvas) 
plt.show() 

я получаю это: what I can do

Как можно штамповать в другом месте, чтобы получить что-то вроде этого? what I'd like to do

ответ

2

Сначала вырезаем прямоугольник (размером с печатью) с холста.

# Draw on the canvas 
canvas[x_offset : x_offset + stamp.shape[0], 
     y_offset : y_offset + stamp.shape[1]][stamp] = 10 
Смежные вопросы