如何将布尔数据类型为True的numpy零数组编入索引?

2024-09-27 23:20:37 发布

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

所以我重新创建了他们去年做的一个Matlab项目,其中一部分涉及到创建一个可以拉出RGB波段的遮罩。 他们是通过一个逻辑零数组来实现的。你知道吗

GMask_Whole = false(ROWS,COLS);

我把它重建成一个小数组。你知道吗

self.green_mask_whole=np.zeros((self.rows, self.columns), dtype=bool)

下一部分我一辈子都想不出如何处理numpy:

GMask_Whole(1:2:end,2:2:end) = true;

我还没有找到一个与numpy相当的动作。有什么想法吗?你知道吗

顺便说一句,如果你想知道这是怎么回事: https://en.wikipedia.org/wiki/Bayer_filter

编辑: 我尝试过的事情:

wut(1:3:end, 1:2:end) = true
wut([1:3:end], [1:2:end]) = true
wut([1:3], [1:2]) = true
wut([1:3], [1:2]) = True
wut(slice(1:3), slice(1:2)) = True

Tags: 项目selfnumpytrue波段slicergb数组
2条回答

你可以翻译Matlab的

GMask_Whole(1:2:end,2:2:end) = true;

到python的方法

green_mask_whole[::2,1::2] = True

(假设green_mask_whole是numpy数组)

numpy可以像Matlab那样或多或少地进行切片,但是synax有点不同。在numpy中,顺序是[begin:end:step],可以将beginendstep保留为空,这将分别为它们提供默认值第一个元素最后一个元素步长1。你知道吗

此外,“numpy”还有一个很好的“宽泛转换”系统,它允许重复单个值(或行/列)以生成与另一个相同大小的新数组。这样就可以将单个值赋给整个数组。你知道吗

因此,在目前的情况下,这样做是可能的

self.green_mask_whole=np.zeros((self.rows, self.columns), dtype=bool)
self.green_mask_whole[::2,1::2] = True

相关问题 更多 >

    热门问题