【问题标题】:How do I index a numpy array of zeroes with a boolean datatype to True?如何将具有布尔数据类型的零的numpy数组索引为True?
【发布时间】:2017-11-22 02:09:31
【问题描述】:

所以我正在重新创建他们去年制作的 Matlab 项目,其中一部分涉及创建拉出 RGB 波段的蒙版。 他们通过一组逻辑零来做到这一点。

GMask_Whole = false(ROWS,COLS);

我将其重建为一个 numpy 数组。

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

【问题讨论】:

  • 编辑我原来的帖子。

标签: python-3.x numpy image-processing multidimensional-array


【解决方案1】:

numpy 可以或多或少地像在 Matlab 中一样进行切片,但语法有点不同。在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

【讨论】:

    【解决方案2】:

    你可以翻译matlab的

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

    到python

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

    (假设 green_mask_whole 是一个 numpy 数组)

    【讨论】:

      猜你喜欢
      • 2012-01-03
      • 2021-12-12
      • 1970-01-01
      • 2021-11-29
      • 2017-08-06
      • 2021-01-06
      • 2017-09-24
      • 2013-06-19
      相关资源
      最近更新 更多