Python 圆形掩模numpy阵列一步到位

Python 圆形掩模numpy阵列一步到位,python,numpy,for-loop,vectorization,Python,Numpy,For Loop,Vectorization,我想对numpy数组中具有特定值的所有元素应用一个圆形掩码。目前,我的(示例)代码如下所示: import numpy as np n = 14 r = 3 #radius ### example array ### array = np.zeros((n, n)) array[2,:]=1 array[:,5]=1 array[5,:]=1 array[:,9] = 3 a, b = np.where((array == 1) | (array == 3)) print(array) #

我想对numpy数组中具有特定值的所有元素应用一个圆形掩码。目前,我的(示例)代码如下所示:

import numpy as np

n = 14
r = 3 #radius
### example array ###
array = np.zeros((n, n)) 
array[2,:]=1
array[:,5]=1
array[5,:]=1
array[:,9] = 3
a, b = np.where((array == 1) | (array == 3))
print(array)

### applying mask ###
for i in range(a.size-1):
    y,x = np.ogrid[-a[i]:np.size(array, 0)-a[i], -b[i]:np.size(array, 1)-b[i]]
    mask = x*x + y*y <= r*r
    array[(mask) & (array != 1) & (array != 3)] = 255 # setting elements in neighborhood of 1 and 3 to 255
print(array)
将numpy导入为np
n=14
r=3#半径
###示例数组###
数组=np.零((n,n))
数组[2,:]=1
数组[:,5]=1
数组[5,:]=1
数组[:,9]=3
a、 b=np,其中((数组==1)|(数组==3))
打印(数组)
###应用遮罩###
对于范围内的i(a.size-1):
y、 x=np.ogrid[-a[i]:np.size(数组,0)-a[i],-b[i]:np.size(数组,1)-b[i]]

mask=x*x+y*y我通常用这个:这里有其他的方法可能会有帮助。@PaulPanzer坦克,这似乎是我想要的。