猿问

按元素将蒙版划分为其他蒙版

我有一个任意大小的 python 数组掩码,其中包括 (0,1,2,3) 数字。我想把它分成 4 个子掩码,每个子掩码都包含布尔值,第一个在 0 元素位置为真,第二个在 1 元素位置为真,依此类推。我的输入数组太大,我需要一种快速的方法在 python 中做到这一点。下面是一个例子:


mask = [[0 1 1]

        [2 0 3]

        [3,3,2]

        [1,1,1]]

我希望有:


sub_mask[0] = [[1 0 0]

               [0 1 0]

               [0 0 0]

               [0 0 0]]

sub_mask[1] = [[0 1 1]

               [0 0 0]

               [0 0 0]

               [1 1 1]]

sub_mask[2] = [[0 0 0]

               [1 0 0]

               [0 0 1]

               [0 0 0]]

sub_mask[3] = [[0 0 0]

               [0 0 1]

               [1 1 0]

               [0 0 0]]


智慧大石
浏览 109回答 2
2回答

狐的传说

你可以通过一个简单的列表理解来做到这一点:sub_mask = [    mask == val    for val in np.unique(mask)]

婷婷同学_

您可以使用 numpy:import numpy as npmask = [[0, 1, 1],        [2, 0, 3],        [3, 3, 2],        [1, 1, 1]]mask = np.array(mask)def get_sub_mask(n):    # Create an empty sub-mask with all 0's    sub_mask = np.zeros(mask.shape)    # Set elements to 1 based on their position in the original mask    sub_mask[np.where(mask == n)] = 1    return sub_mask
随时随地看视频慕课网APP

相关分类

Python
我要回答