我有一个任意大小的 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贡献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
添加回答
举报
0/150
提交
取消