使用NumPy填充形状/轮廓

2024-04-24 10:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我想填充满足某些属性的numpy矩阵的一部分(可能使用mask)。也就是说,它是某种形状的矩阵表示,例如,正方形可以是:

square =   [0,0,0,0,0;
            0,1,1,1,0;
            0,1,0,1,0;
            0,1,1,1,0]

变成:

^{pr2}$

并圈出:

circle =   [0,0,0,0,0,0;
            0,0,1,1,0,0;
            0,1,0,0,1,0;
            0,0,1,1,0,0]

变成:

c_filled = [0,0,0,0,0,0;
            0,0,1,1,0,0;
            0,1,1,1,1,0;
            0,0,1,1,0,0]

如果只使用numpy而不使用其他外部库,这是可能的吗? 我想将此函数/算法应用于300x300形状。在

非常感谢!在


Tags: 函数numpy算法属性矩阵mask形状square
1条回答
网友
1楼 · 发布于 2024-04-24 10:48:03

使用^{}非常简单,因为我们可以沿着行从左到右,然后从右到左使用它一次,然后通过减法得到非零的公共区域。这对凸面形状很有效。在

因此,实施将是-

def fill_contours(arr):
    return np.maximum.accumulate(arr,1) & \
           np.maximum.accumulate(arr[:,::-1],1)[:,::-1]

以下是对任意形状的示例-

^{pr2}$

相关问题 更多 >