为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

智慧大石 2021-06-09 22:05:55
我有一个任意大小的 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]]
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

你可以通过一个简单的列表理解来做到这一点:


sub_mask = [

    mask == val

    for val in np.unique(mask)

]


查看完整回答
反对 回复 2021-06-22
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以使用 numpy:


import numpy as np


mask = [[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


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信