Как создать круговую маску в двумерной матрице с помощью 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
→ Ссылка