我有两个具有相同尺寸和形状的数组。此nv_arr数组具有空值(-9999)。我创建了一个遮罩的数组nv_mask来遮盖除-9999以外的所有值,以某种方式通过位置“更新”该out数组,而无需创建新的数组。

换句话说,数字0、3、6和2必须替换为-9999。我怎样才能做到这一点?

    >>> nv_arr
     ([[-9999,   123,   -9999],
       [-9999,   444,   444],
       [-9999,   323,   323]])

>>> nv_mask
[[-9999 -- -9999]
 [-9999 -- --]
 [-9999 -- --]]

 >>> out
      ([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

最佳答案

假设nv_maskMaskedArray,则可以调用.mask属性来设置值:

>>> out[~nv_mask.mask] = -9999
>>> out
array([[-9999,     1, -9999],
       [-9999,     4,     5],
       [-9999,     7,     8]])

关于python - 如何基于具有相同尺寸和形状的蒙版数组更新numpy数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53857404/

10-11 02:01