Как создать круговую маску в двумерной матрице с помощью numpy?
Необходимо взять круговой срез/маску в любом месте двумерной матрицы, с любыми значениями.
import numpy as np
def makeData():
x = np.linspace(3, 2.5, 100)
y = np.linspace(3, 2.5, 100)
xgrid, ygrid = np.meshgrid(x, y)
## print("Двумерную матрица", xgrid, ygrid)
z = np.random.normal(xgrid, ygrid)
## print("Значения функции", z)
return xgrid, ygrid, z
if __name__ == '__main__':
x, y, z = makeData()
## x1 = -3
## y2 = -6
## z3 = -9
## mask = np.sqrt((x-x1)**2+(y-y2)**2+(z-z3)**2)
## print(mask)
## r = 3
## for x in range(0,100):
## for y in range(0,100):
## if mask[x,y] < r:
## mask[x,y] = 0
## elif mask[x,y] >= r:
## mask[x,y] = 2.5
Ответы (1 шт):
Автор решения: Alex Alex
→ Ссылка
Можно так:
import numpy as np
x = np.linspace(3, 2.5, 100)
y = np.linspace(3, 2.5, 100)
r=.1 # радиус маски
x0,y0=2.7,2.8 # центр маски
X,Y=np.meshgrid(x,y)
mask=(X-x0)**2+(Y-y0)**2<r**2