gpt4 book ai didi

python - 在 python 中为卷积创建 nxn 边界掩码的优雅方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:09 24 4
gpt4 key购买 nike

什么是编写返回 nxn 卷积边界掩码的函数的最 pythonic 方法,例如对于 3x3 它将返回 [[1,1,1],[1,0,1],[1, 1,1]],对于 5x5 它将返回 [[1,1,1,1,1],[1,0,0,0,1],[1,0,0, 0,1],[1,0,0,0,1],[1,1,1,1,1]] 等等。

这有效(但不是那么 pythonic):

def boundaryMask(size):
mask=np.zeros((size,size))
for i in range(size):
mask[0][i]=1
mask[i][0]=1
mask[i][size-1]=1
mask[size-1][i]=1
return mask

最佳答案

一个选择是创建一个ones数组,然后使用切片将零分配到数组的中心:

N = 4
x = np.ones((N, N))
x[1:-1, 1:-1] = 0
x
#array([[ 1., 1., 1., 1.],
# [ 1., 0., 0., 1.],
# [ 1., 0., 0., 1.],
# [ 1., 1., 1., 1.]])

放入一个函数并测试各种尺寸:

def boundaryMask(size):
mask=np.ones((size,size))
mask[1:-1,1:-1] = 0
return mask

boundaryMask(1)
# array([[ 1.]])

boundaryMask(2)
#array([[ 1., 1.],
# [ 1., 1.]])

boundaryMask(3)
#array([[ 1., 1., 1.],
# [ 1., 0., 1.],
# [ 1., 1., 1.]])

boundaryMask(4)
#array([[ 1., 1., 1., 1.],
# [ 1., 0., 0., 1.],
# [ 1., 0., 0., 1.],
# [ 1., 1., 1., 1.]])

关于python - 在 python 中为卷积创建 nxn 边界掩码的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com