【问题标题】:How to update a numpy array based on a masked array w/ same dimension and shape如何基于具有/相同维度和形状的掩码数组更新 numpy 数组
【发布时间】:2018-12-19 18:43:14
【问题描述】:

我有两个具有相同尺寸和形状的数组。这个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]])

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

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

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

    【讨论】:

    • 几乎正确;-P .mask 在掩码值处为 True,而不是有效值。
    • @PaulPanzer 啊,我看到我搞砸了这些数组的初始化,所以我的答案需要一个 ~ 它没有。泰!
    猜你喜欢
    • 2020-05-24
    • 1970-01-01
    • 2019-05-18
    • 2021-06-24
    • 2017-01-06
    • 2017-03-12
    • 2020-08-08
    • 2013-03-18
    相关资源
    最近更新 更多